gpt4 book ai didi

java - Log4j:如何在单独的文件中按类过滤

转载 作者:行者123 更新时间:2023-12-01 16:24:20 26 4
gpt4 key购买 nike

我在更改现有配置时得到奇怪的结果:

配置

<?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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com