0

我的任务非常简单:将所有事件(警告及以上)写入主日志,对于某些记录器,仅将调试消息写入第二个日志文件(警告及以上必须记录到主日志)。有时我也希望在主日志中看到调试消息(例如 log4j.logger.com.test=debug)

此外,我必须使用 log4j 属性文件语法。我不明白在这种情况下可加性(见我的最后一行)是否可以是有条件的,或者我应该对任务使用完全不同的方法(哪一种?)。

我现在拥有的:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] %c:%L - %m%n

log4j.rootLogger=warn, stdout

log4j.appender.file2=org.apache.log4j.RollingFileAppender
log4j.appender.file2.maxFileSize=10240KB
log4j.appender.file2.maxBackupIndex=30
log4j.appender.file2.File=${catalina.home}/logs/test.log
log4j.appender.file2.encoding=UTF-8
log4j.appender.file2.layout=org.apache.log4j.PatternLayout
log4j.appender.file2.layout.ConversionPattern=%d %-5p [%t] %c:%L - %m%n
log4j.logger.org.hibernate = debug, file2
log4j.additivity.org.hibernate = false

log4j.logger.com.test=debug
4

1 回答 1

0

我建议您查看 Log4J2,因为 log4j1.x 不再被积极维护(并且 Log4J2 具有其他几个优点,例如性能改进)。

一个常见的用例是将调试和更高级别(信息、警告、错误、致命)写入一个文件以供开发人员使用,并将警告和更高级别(警告、错误、致命)写入另一个文件,例如用于支持。

从您的描述来看,您似乎只想将输出限制为调试级别,并排除信息、警告、错误和致命级别的消息。这是可能的,但不像上面的用例那么简单。您可能需要使用过滤器:http: //logging.apache.org/log4j/2.x/manual/filters.html 看看过滤器文档,我会看看我是否可以挖掘一个示例。

于 2013-09-30T22:34:20.043 回答