【发布时间】:2011-01-28 00:32:39
【问题描述】:
我有一个 log4J 设置,其中根记录器应该将错误级别及以上的消息记录到控制台,而另一个记录器将所有内容记录到 syslog。
log4j.properties 是:
# Root logger option
log4j.rootLogger=ERROR,R
log4j.appender.R=org.apache.log4j.ConsoleAppender
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p %t %c - %m%n
log4j.logger.SGSearch=DEBUG,SGSearch
log4j.appender.SGSearch=org.apache.log4j.net.SyslogAppender
log4j.appender.SGSearch.SyslogHost=localhost
log4j.appender.SGSearch.Facility=LOCAL6
log4j.appender.SGSearch.layout=org.apache.log4j.PatternLayout
log4j.appender.SGSearch.layout.ConversionPattern=[%-5p] %m%n
在我做的代码中
private static final Logger logger = Logger.getLogger("SGSearch");
.
.
.
logger.info("Commencing snapshot index [" + args[1] + " -> " + args[2] + "]");
发生的事情是我得到了所有日志级别的控制台日志。似乎正在发生的事情是 SGSearch 的级别以某种方式覆盖了为根记录器设置的级别。我想不通。
我已经确认 Log4J 正在读取我认为是的属性文件,而不是其他(通过 -Dlog4j.debug 选项)
【问题讨论】:
-
我遇到了同样的问题/困惑。见stackoverflow.com/questions/3023690/…。