Log4j:条件可加性(或根据条件将事件传播到根记录器?)

时间:2013-09-30 12:27:25

标签: java logging log4j log4j2

我的任务非常简单:将所有事件(警告及以上)写入主日志,并将某些记录器写入仅调试消息写入第二个日志文件(警告及以上必须记录到主日志)。有时我希望在主日志中看到调试消息(例如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

1 个答案:

答案 0 :(得分:0)

我建议您查看Log4J2,因为不再主动维护log4j1.x(Log4J2还有其他一些优点,如性能改进)。

一个常见的用例是将调试和更高版本(信息,警告,错误,致命)写入开发人员的文件,并警告和更高(警告,错误,致命)到另一个文件,例如支持。

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