我的目标:
实现所有自定义、内置记录器到来自同一个包的不同文件。
- 信息 - 信息日志文件
- 调试 - 调试日志文件
- perf - perf 日志文件 - 自定义一个
我尝试了什么:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} [%t] %-5level %c{36} - %msg%n" />
</Console>
<RollingFile name="RollingDebugFile"
fileName="logs/application-debug.log"
filePattern="logs/application-debug%d{yyyy-MM-dd-HH-mm}.log"
append="true">
<Filters>
<ThresholdFilter level="DEBUG" />
<ThresholdFilter level="INFO" onMatch="DENY"
onMismatch="NEUTRAL" />
</Filters>
<PatternLayout>
<Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %c{36} %l: %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
<RollingFile name="RollingInfoFile"
fileName="logs/application-info.log"
filePattern="logs/application-info%d{yyyy-MM-dd-HH-mm}.log"
append="true">
<Filters>
<ThresholdFilter level="INFO" />
<ThresholdFilter level="WARN" onMatch="DENY"
onMismatch="NEUTRAL" />
</Filters>
<PatternLayout>
<Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %c{36} %l: %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="testlog4j2" additivity="false">
<AppenderRef ref="RollingDebugFile" level="debug" />
<AppenderRef ref="Console" />
</Logger>
<Logger name="testlog4j2" additivity="false">
<AppenderRef ref="RollingInfoFile" level="info" />
<AppenderRef ref="Console" />
</Logger>
<Root level="ALL">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
这里的问题:
记录器名称相同。因此最新的记录器只能工作。在这种情况下,信息有效,但也不能调试。
我的疑问:
我参考了很多帖子。我认为下面的事情有效。
- 将每一个都设为自定义记录器,如此处所述。但我确定这是否是正确的解决方案?
- 关于 log4j2.xml 文件,我的方法是否正确?我是新手,所以请提供任何建议。