Reputation: 15646
Java 1.8
log4j-slf4j-impl
Maven 3.5
I want to generate every day new log file.
So I use RollingFile
Here my log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test" status="WARN">
<Properties>
<Property name="baseDir">logs</Property>
<Property name="patterLayout">%d{[dd.MM.yyyy HH:mm:ss.SSS]} %l %p:%n %m%n</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${patterLayout}"/>
</Console>
<RollingFile name="RollingFile" fileName="${baseDir}/trace.log"
filePattern="${baseDir}/$${date:yyyy-MM}/trace-%d{yyyy-MM-dd}.log.gz">
<PatternLayout pattern="${patterLayout}"/>
<CronTriggeringPolicy schedule="0 0 0 * * ?"/>
<DefaultRolloverStrategy>
<Delete basePath="${baseDir}" maxDepth="2">
<IfFileName glob="*/trace-*.log.gz"/>
<IfLastModified age="60d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
<Logger name="org.apache.poi" level="error">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Logger>
<Logger name="org.apache.xmlbeans" level="error">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Logger>
</Loggers>
</Configuration>
I use RollingFile
from official doc:
pom.xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
Here java code:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class App {
private static final Logger logger = LoggerFactory.getLogger(App.class);
public static void main(String[] args) {
logger.trace("JDK: {}, project dir {} ", System.getProperty("java.version"), System.getProperty("user.dir"));
}
}
Here trace.log result:
[28.11.2021 17:28:33.972] com.myproject.xls2metro2.util.XlsxUtil.xlsx2metro2(XlsxUtil.java:17) DEBUG:
Converting /xls2metro2/link/abs/import/test.txt to METRO2 file...
[28.11.2021 17:28:34.063] com.myproject.xls2metro2.util.XlsxUtil.xlsx2metro2(XlsxUtil.java:17) DEBUG:
Converting /xls2metro2/link/abs/import/not_exist_file.txt to METRO2 file...
[30.11.2021 19:09:25.560] com.myproject.xls2metro2.util.XlsxUtil.xlsx2metro2(XlsxUtil.java:17) DEBUG:
Converting /xls2metro2/link/abs/import/test.txt to METRO2 file...
[30.11.2021 19:09:25.626] com.myproject.xls2metro2.util.XlsxUtil.xlsx2metro2(XlsxUtil.java:17) DEBUG:
Converting /xls2metro2/link/abs/import/not_exist_file.txt to METRO2 file...
As you can see logs for differents day generate in ONE log file.
But I need new log for every day.
Upvotes: 0
Views: 609
Reputation: 15646
This work correct. Use another RollingFile
:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test" status="WARN">
<Properties>
<Property name="baseDir">logs</Property>
<Property name="patterLayout">%d{[dd.MM.yyyy HH:mm:ss.SSS]} [%t] %l %p:%n %m%n</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${patterLayout}"/>
</Console>
<RollingFile
name="RollingFile"
fileName="${baseDir}/trace.log"
filePattern="${baseDir}/trace.%d{dd-MMM}.log.gz"
ignoreExceptions="false">
<PatternLayout>
<Pattern>${patterLayout}</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
<DefaultRolloverStrategy max="5"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
<Logger name="org.apache.poi" level="error">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Logger>
<Logger name="org.apache.xmlbeans" level="error">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Logger>
</Loggers>
</Configuration>
And now every day generate new log.
trace.02-Dec.log.gz
trace.03-Dec.log.gz
trace.log
Nice.
So the question is:
Why example from official documentation is not work? Example from official documentation
Upvotes: 1