问题描述
我的目标:
我尝试过的事情:
<?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>
这里是问题:
记录器名称相同。因此,最新的记录器仅适用。信息有效,但在这种情况下也无法调试。
我的疑问:
我提到了很多帖子。我认为以下情况有效。
解决方法
深入研究这一点之后,我发现必须使用以下内容。否则记录器将被覆盖
<Logger name="testlog4j2" additivity="false">
<AppenderRef ref="RollingDebugFile" level="debug" />
<AppenderRef ref="RollingInfoFile" level="info" />
<AppenderRef ref="RollingWarnFile" level="warn" />
<AppenderRef ref="Console" />
</Logger>