我在更改现有配置时得到奇怪的结果:
配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" verbose="true" dest="err" name="RdmCoreLogProperties">
<Properties>
<Property name="baseFilename">$${env:SOME_VAR}/$${sys:processName}_$${sys:instanceNumber}_$${env:SOME_VAR2}.log</Property>
<Property name="pattern">%d{HH:mm:ss.SSS} [%t] %-5level %logger{1.} - %msg%n</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${pattern}"/>
</Console>
<RollingFile name="RollingFile" fileName="${baseFilename}" filePattern="${baseFilename}.%02i" immediateFlush="true" append="true">
<PatternLayout pattern="${pattern}"/>
<Policies>
<OnStartupTriggeringPolicy minSize="0"/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<DefaultRolloverStrategy max="99"/>
</RollingFile>
<!--My new file-->
<File name="Filtered" fileName="${baseFilename}_FILTERED.log">
<PatternLayout pattern="${pattern}"/>
</File>
</Appenders>
<Loggers>
<!--Already existing loggers-->
<Logger name="1AB" level="debug"/>
<Logger name="1AB.message" level="trace"/>
<Logger name="2AB" level="debug"/>
<Logger name="2AB.message" level="trace"/>
<!--Already existing loggers-->
<!--My new Logger-->
<Logger name="com.package.MyClass">
<level value="INFO"/>
<appender-ref ref="Filtered"/>
</Logger>
<Root level="info">
<AppenderRef ref="RollingFile"/>
<AppenderRef ref="Console"/>
<AppenderRef ref="Filtered"/>
</Root>
</Loggers>
</Configuration>
“过滤”日志文件(看看感兴趣的行现在是如何重复的!)
bla bla bla not interesting text...
16:36:30.963 [XXX] INFO com.package.MyClass - important and unique text
16:36:30.963 [XXX] INFO com.package.MyClass - important and unique text
bla bla bla more boring and not interesting text...
原始日志文件(该文件保持不变,这实际上没问题)
bla bla bla not interesting text...
16:36:30.963 [XXX] INFO com.package.MyClass - important and unique text
bla bla bla more boring and not interesting text...
所需的过滤日志文件
16:36:30.963 [XXX] INFO com.package.MyClass - important and unique text
注释 1:如果我将 additivity="false"添加到新记录器,我会得到以下结果:
“过滤”日志文件(现在日志等于原始日志文件)
bla bla bla not interesting text...
16:36:30.963 [XXX] INFO com.package.MyClass - important and unique text
bla bla bla more boring and not interesting text...
原始日志文件
bla bla bla not interesting text...
bla bla bla more boring and not interesting text...
注2:如果我将记录器名称更改为不存在的类,则原始日志文件和新日志文件是相同的。
我在这里做错了什么?谢谢!
最佳答案
您只需将 additivity="false"
添加到您的记录器即可。在这种情况下:
<Logger name="com.package.MyClass" additivity="false">
<level value="INFO"/>
<appender-ref ref="Filtered"/>
</Logger>
应该可以解决您的问题。
关于java - Log4j:如何在单独的文件中按类过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62182834/