我有一个log4J设置,其中根记录器应该将ERROR级别消息和上面的消息记录到控制台,另一个记录器将所有内容记录到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
Run Code Online (Sandbox Code Playgroud)
在代码我做
private static final Logger logger = Logger.getLogger("SGSearch");
.
.
.
logger.info("Commencing snapshot index [" + args[1] + " -> " + args[2] + "]");
Run Code Online (Sandbox Code Playgroud)
发生的事情是我获得了所有日志记录级别的控制台日志记录.似乎正在发生的事情是,SGSearch的级别会以某种方式覆盖根记录器的级别设置.我无法弄清楚.
我已经确认Log4J正在读取我认为的属性文件,而没有其他(通过-Dlog4j.debug选项)
我在我的Java项目上使用以下log4j.properties配置了log4j:
log4j.rootLogger=WARNING, X
log4j.appender.X=org.apache.log4j.ConsoleAppender
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.ConversionPattern=%p %m %n
log4j.logger.org.hibernate.SQL=WARNING
log4j.logger.com.****.services.clarity.dao.impl=WARNING
log4j.logger.com.****.services.clarity.controller=WARNING
log4j.logger.com.****.services.clarity.services.impl=WARNING
log4j.logger.com.****.services.clarity.feeds.impl=WARNING
Run Code Online (Sandbox Code Playgroud)
按照配置,它应该只打印WARNING消息,但它会将所有级别打印到DEBUG.
任何想法可以来自哪里?
谢谢 !