gpt4 book ai didi

java - 在 log4j2 中按类名过滤

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:59 25 4
gpt4 key购买 nike

我正在使用 log4j2,但我不知道如何按类名进行过滤。我试过使用 RegexFilter 但它只过滤文本消息。在旧的 log4j 中,标签 'filter' 就足够了

<filter class="aaaa.bbbb.cccc.ClassName">

有人知道现在该怎么做吗?

提前致谢!

更新:

好的,我做到了!我需要定义一个记录器并在属性“名称”中设置类名:

<loggers>
<logger name="aaaa.bbbb.cccc.ClassName" additivity="false" level="info">
<appender-ref ref="RollingFile" />
</logger>
<root level="error">
<appender-ref ref="RollingFile" />
</root>
</loggers>

最佳答案

如果您遵循记录器的命名约定,这在 Log4j 中会自动工作。在您的代码中,使用类名声明记录器:

Logger logger = LogManager.getLogger(MyClass.class);

记录器自动分配名称 fully.qualified.class.name.of.MyClass。现在,在您的配置中,您可以使用此完全限定名称(或包名称 的第一部分)来执行过滤路由


过滤

下面的示例显示了如何根据执行日志记录的类的包过滤日志事件:所有 DEBUGTRACE 级别的日志事件按包 中的类>com.other.company 将被忽略,对于包 com.another.project 中的类,只有 ERRORFATAL 日志记录将被包括在内。

<Configuration status="warn">
<Appenders>
<File name="MyFile" fileName="logs/my.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>
</Appenders>
<Loggers>

<!-- drops all DEBUG and TRACE logging done by any class in this package -->
<Logger name="com.other.company" level="INFO" />

<!-- log only ERROR and FATAL logging by classes in this package -->
<Logger name="com.another.project" level="ERROR" />

<!-- by default, all log events are written to MyFile -->
<Root level="trace">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>

路由

下面的示例显示了如何根据执行日志记录的类的包将日志事件路由到单独的日志文件:包 com.other.company 中的所有类日志将不会写入my.log 只由other.log

<Configuration status="warn">
<Appenders>
<File name="MyFile" fileName="logs/my.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>
<File name="OtherFile" fileName="logs/other.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>
</Appenders>
<Loggers>
<!-- all logging from this package and subpackages goes to OtherFile -->
<!-- Note: set additivity=false or logging will also go to the root logger -->
<Logger name="com.other.company" additivity="false">
<AppenderRef ref="OtherFile"/>
</Logger>
<Root level="trace">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>

关于java - 在 log4j2 中按类名过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16917008/

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