java - java日志错误到stderr和调试,使用 Log4J 向stdout信息

  显示原文与译文双语对照的内容
51 0

我想将日志添加到我正在开发的应用程序中,使用 apache Log4J 。这里时,我想将所有的日志消息重定向到标准信息和( 跟踪,调试) 到 stdout,以及( 错误,致命) 上的所有它的他日志消息。例如:

...
logger.info("Processing at some point");//must be written to stdout
logger.debug("Point x was processed");//must be written to stdout
logger.warn("Incorrect point config");//must be written only to stderr
logger.error("Exception occurred at point x");//must be written only to stderr

那么我的log4j.properties 文件应该是什么?这里是它的momment:

log4j.rootLogger=DEBUG, stdout, stderr
# configure stdout
# set the conversion pattern of stdout
# Print the date in ISO 8601 format
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold = DEBUG
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-5p %d [%t][%F:%L] : %m%n
# configure stderr
# set the conversion pattern of stdout
# Print the date in ISO 8601 format
log4j.appender.stderr = org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Threshold = WARN
log4j.appender.stderr.Target = System.err
log4j.appender.stderr.layout = org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern = %-5p %d [%t][%F:%L] : %m%n

上述配置的问题是 logger.error() 。在stdout上打印。

时间:原作者:0个回答

139 4

每个of在上的双向双向位置

不幸的是,没有最大的阈值,所以在你得到调试消息的地方,你还会得到警告消息。那是有点痛苦,IMO 。

原作者:
142 1

在属性文件格式中也已经解决。窍门是让过滤器定义正确。这里是 Log4J 属性信息。

原始尝试,修改为过滤警告&错误:

log4j.rootLogger=TRACE, stdout, stderr
# configure stdout
# set the conversion pattern of stdout
# Print the date in ISO 8601 format
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold = TRACE
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-5p %d [%t][%F:%L] : %m%n
log4j.appender.stdout.filter.filter1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.stdout.filter.filter1.levelMin=TRACE
log4j.appender.stdout.filter.filter1.levelMax=INFO
# configure stderr
# set the conversion pattern of stdout
# Print the date in ISO 8601 format
log4j.appender.stderr = org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Threshold = WARN
log4j.appender.stderr.Target = System.err
log4j.appender.stderr.layout = org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern = %-5p %d [%t][%F:%L] : %m%n
原作者:
...