3

I'm using Log4j2 ver 2.3

log4j2.xml looks like:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
    <RollingFile name="RollingFile"
                 fileName="${sys:catalina.base}/logs/catalina.${date:yyyy-MM-dd}.log"
                 filePattern="${sys:catalina.base}/logs/catalina.%d{yyyy-MM-dd}.log">
        <PatternLayout pattern="[TID=%X{TId}] %d{MMM dd, yyyy HH:mm:ss,SSS} %c %M:%L %p: %m%n"/>
        <TimeBasedTriggeringPolicy modulate="true" />
    </RollingFile>
</Appenders>
<Loggers>
    <Root level="DEBUG" >
        <AppenderRef ref="RollingFile" />
    </Root>
</Loggers>
</Configuration>

All works fine until next day when log from a previous day is getting overwritten by some logs from current day.

Example: catalina.2018-03-21.log yesterday (March 21st) was fine but today got overwritten by some logs from 2018-03-22 when catalina.2018-03-22.log contains rest of logs from today (March 22nd)

Any thoughts?

JackTheKnife
  • 3,795
  • 8
  • 57
  • 117

4 Answers4

2

Log4j 2.3 is somewhat old, being released on 2015-05-09, almost 3 years old. So try using a updated version; version 2.11.0 is the latest as of now which was released on 2018-03-11.

Update: To continue using Log4j 2.3, you can compromise your requirements. One of the options could be using static value for fileName attribute. E.g. .../catalina.log, .../catalina.current.log, etc.

sazzad
  • 5,740
  • 6
  • 25
  • 42
0

try

BasicConfigurator.resetConfiguration()

in the method that uses logger after BasicConfigurator.configure()

0

Try adding an auto-increment variable to your file pattern (%i). This worked fine for me.

filePattern="${sys:catalina.base}/logs/catalina.%d{yyyy-MM-dd}.%i.log"
0

mention in time based TimeBasedTriggeringPolicy time interval as 1 it will rollover file on daylly basis