gpt4 book ai didi

java - log4j:根据类别更改一个附加程序的阈值

转载 作者:行者123 更新时间:2023-12-01 05:00:00 25 4
gpt4 key购买 nike

我想实现以下目标:

All log-messages with TRACE or higher should be logged to log-trace.log
All log-messages with DEBUG or higher should be logged to log-debug.log

In general messages with DEBUG or higher should be logged to stdout, but:
for Class de.foo only INFO or higher should be logged to stdout,
for Class de.bar also TRACE and higher should be logged to stdout.

我设法将文件分割为工作:

## Root logger
log4j.rootLogger=trace,STDOUT,FILE_DEBUG,FILE_TRACE
## Appenders
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Threshold=DEBUG
# File appenders
log4j.appender.FILE_DEBUG=org.apache.log4j.RollingFileAppender
log4j.appender.FILE_DEBUG.File=logs/log-debug.log
log4j.appender.FILE_DEBUG.Threshold=DEBUG

log4j.appender.FILE_TRACE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE_TRACE.File=logs/log-trace.log
log4j.appender.FILE_TRACE.Threshold=TRACE

# [..] Layouts

但是,如果我尝试更改标准输出的调试级别,我也会更改文件中的内容,例如

log4j.logger.de.foo=info 

使来自 foo 的 TRACE 消息从跟踪日志文件中消失。我正在寻找的可能是这样的:

log4j.appender.FILE_DEBUG.de.foo.Threshold=DEBUG

但这不起作用。感谢您的帮助:)

最佳答案

我认为正确的方法是为附加程序 STDOUT 编写自定义过滤器。因此,您将能够为特定包设置控制台日志的最低级别。以下是类似过滤器的示例:log4j isolating certain level from a class .

请注意,您应该使用 XML 配置,因为属性配置不支持过滤器。

关于java - log4j:根据类别更改一个附加程序的阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517617/

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