Here is my log4j2.xml, to generate individual log file every request.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/Server.log"
filePattern="logs/Server-%d{MM-dd-yyyy}-%i.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="10">
<Delete basePath="logs/" maxDepth="1">
<IfLastModified age="7d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<Routing name="Routing">
<Routes pattern="$${ctx:logFileName}">
<Route>
<RollingFile name="Rolling-${ctx:logFileName}" fileName="log/${ctx:logFileName}"
filePattern="log/${ctx:logFileName}-%d{MM-dd-yyyy}.log">
<PatternLayout>
<pattern>%d{ISO8601} %p - %m%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
</RollingFile>
</Route>
</Routes>
</Routing>
</Appenders>
<Loggers>
<Logger name="com.test" level="INFO" additivity="false">
<AppenderRef ref="Routing" />
</Logger>
<Root level="INFO">
<AppenderRef ref="RollingFile"/>
<AppenderRef ref="Routing"/>
</Root>
</Loggers>
</Configuration>
Java code.
public void run() {ThreadContext.put("logFileName", logFilename); initializeLogs(); runScript(); ThreadContext.remove("logFileName"); }
Here is my issue, Below log file ${ctx:logFileName}
generating after startup also adding logs not sure which logs are updating could not open it and log files also are generated separately when multiple requests are coming at same time.
-rw-rw-r--. 1 test test 88K May 23 13:46 *${ctx:logFileName}* -rw-rw-r--. 1 test test 19K May 23 13:58 PROD_STAT_1234_SYSTEM.log -rw-rw-r--. 1 test test 60K May 23 13:58 PROD_STAT_1235_SYSTEM.log
.
Implemented based on solution from Log4j2: How to write logs to separate files for each user?
Any idea how to resolve?