gpt4 book ai didi

java - log4j 根据类和级别输出到不同的文件

转载 作者:搜寻专家 更新时间:2023-11-01 02:52:29 28 4
gpt4 key购买 nike

我想做的很简单,但我似乎无法让它与 log4j 一起工作。

我需要 2 个日志文件。第一个应包含调试级别或更高级别的所有调试语句,但仅来自 my.app 中的类。*

第二个日志文件应包含所有警告级别及更高级别的消息,无论源类是什么。

我尝试了以下配置,但它不起作用:

log4j.rootLogger=warn,root
log4j.appender.root=org.apache.log4j.FileAppender
log4j.appender.root.layout = org.apache.log4j.PatternLayout
log4j.appender.root.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.root.file = /tmp/logs/warn.file
log4j.appender.root.append = true
log4j.appender.root.MaxFileSize=10MB
log4j.appender.root.MaxBackupIndex=7

log4j.logger.my.app=debug,debugAppender
log4j.appender.debugAppender = org.apache.log4j.RollingFileAppender
log4j.appender.debugAppender.file = /tmp/logs/my.debug.file
log4j.appender.debugAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.debugAppender.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.debugAppender.append = true
log4j.appender.debugAppender.MaxFileSize=10MB
log4j.appender.debugAppender.MaxBackupIndex=7
log4j.additivity.my.app=false

我认为问题出在最后一行。如果我将可加性设置为 true,那么调试和信息级别的消息也将添加到我的 warn.file 中。但如果我将其设置为 false,来自 my.app 的警告只会记录到 debug.file。

最佳答案

您需要在每个附加程序上使用阈值 - 完全按照 Log Level per appender for a single Logger 中的描述.

因此将可加性设置为 true,然后添加:

log4j.appender.root.Threshold=WARN

更多详情请访问 http://logging.apache.org/log4j/1.2/faq.html#a2.9 : "是否可以按级别将日志输出定向到不同的appender?"

只是我额外的 0.02 美元:我建议切换到 XML 格式而不是属性格式 - 这将使您为迁移到 SLF4J 做好准备。/Logback ,因为 log4j 正在迅速被这个值得继承的组合所取代。

关于java - log4j 根据类和级别输出到不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8690318/

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