3
votes

This is my log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">

    <Appenders>
            <!-- Generate STDOUT in console -->
            <Console name="CONSOLE" target="SYSTEM_OUT">
                    <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
            </Console>

            <!-- Generate rolling log for router with per hour interval policy -->
            <RollingFile name="RouterRollingFile" fileName="/apps/bea/mb-logs/router.log"
                     immediateFlush="false" filePattern="/apps/bea/mb-logs/router.%d{yyyy-MM-dd-HH}-%i.log">
                    <PatternLayout>
                            <pattern>%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n</pattern>
                    </PatternLayout>
                    <Policies>
                            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                    </Policies>
                    <!-- <DefaultRolloverStrategy fileIndex="max" max="24" /> -->
            </RollingFile>
    </Appenders>

    <Loggers>
            <AsyncLogger name="com.tritronik.mb.router" level="info"
                    additivity="false" includeLocation="true">
                    <AppenderRef ref="RouterRollingFile" />
            </AsyncLogger>
            <!-- <Root level="info">
                    <appender-ref ref="CONSOLE" />
            </Root> -->
    </Loggers>

I want to achieve daily rolling file with per hour rolling, so far I haven't been able to produce the log with proper format, and as I remember, the interval parameter seems like to increment by day not hour.

I want to achieve this:

router.log --> currently written file

router.log.2014-06-20-00

router.log.2014-06-20-01

...

router.log.2014-06-20-23

router.log.2014-06-21-00

...

Instead I achieve this:

router.log

router.log.2014-06-20-1 --> One day worth of logs

I've been able to do this using usual log4j, but the io performance goes down and force me to use log4j2, but I stumble into this problem.

Where do I have it wrong? Or is it true that log4j2 doesn't support this yet?

Thank you

1

1 Answers

1
votes

You may have found a bug.

Is this only happening with Async Loggers or also when you configure a plain (synchronous) logger?

Also, have you tried using a filePattern that looks like this: filePattern="/apps/bea/mb-logs/$${date:yyyy-MM-dd}/router.%d{yyyy-MM-dd-HH}.log"? I have a (admittedly vague) suspicion that the $${date:...} part might be related.

If neither of the above makes any difference, could you please file a Jira ticket on the log4j2 issue tracker? https://issues.apache.org/jira/browse/LOG4J2