我第一次尝试使用SLF4J-Log4j。在每个Java类中,我都像这样定义一个记录器:
private org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(<TheClass>.class);
(当然,我确保slf4-log4j12-1.6.4.jar
JAR在类路径上!)
但无论何时我使用记录器,如logger.debug("Something interesting happened");
或logger.error("An error occurred");
,我都不会在日志文件中看到它们的输出。但是,没有异常发生,应用程序(它实际上是部署到Tomcat的WAR)运行正常。
以下是项目中包含的log4j.properties
文件:
# Set the root logger to DEBUG.
log4j.rootLogger=DEBUG
# MonitorLog - used to log messages in the Monitor.log file.
log4j.appender.MonitorAppender=org.apache.log4j.FileAppender
log4j.appender.MonitorAppender.File=${catalina.base}/logs/MyAppMonitor.log
log4j.appender.MonitorAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.MonitorAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n
# Use the MonitorAppender to log all messages.
log4j.logger.*=DEBUG,MonitorAppender
org.quartz.impl.StdSchedulerFactory=DEBUG,MonitorAppender
这个WAR使用Quartz来完成一些工作,这就是你看到最后一个条目的原因。
当我检查Tomcat的logs /目录时,我看到MyAppMonitor.log
已创建,但它没有任何内容(0字节)。我已经扫描了所有典型的catalina.out,catalina-和localhost-日志,而且我的日志语句都没有看到光明。
我在想:
log4j.properties
配置正确,或log4j.properties
(虽然我会想到我会看到错误或警告),或者MonitorAppender
的东西,所以我想知道这是不是问题;我只是按照我在网上看到的一个例子有人可以找到我要去的地方,还是帮我解决这个问题?提前谢谢!
答案 0 :(得分:10)
您的log4j.properties
配置文件中包含许多错误。尝试使用以下简单的东西。
log4j.debug=true
log4j.rootLogger=DEBUG, CON
log4j.appender.CON=org.apache.log4j.ConsoleAppender
log4j.appender.CON.layout=org.apache.log4j.PatternLayout
log4j.appender.CON.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
对于问题中的配置文件,根记录器没有附加的appender。而且,行
log4j.logger.*=DEBUG,MonitorAppender
无效,因为不支持“*”。