我第一次尝试使用 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");
or 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 来 cron 执行一些作业,这就是您看到最后一个条目的原因。
当我检查 Tomcat 的 logs/ 目录时,我看到了MyAppMonitor.log
get 已创建,但其中没有任何内容(0 字节)。我也扫描了所有典型的 catalina.out、catalina- 和 localhost- 日志,但我的日志语句都没有出现。
我在想:
- 我没有
log4j.properties
正确配置,或者 - 我没有正确配置 slf4j-log4j,或者
- 这是一个类路径问题,也许 WAR 找不到
log4j.properties
(尽管我想我会看到错误或警告),或者 - 我没有正确使用(API 本身)SLF4J,或者
- 我从未真正创建过名为的东西
MonitorAppender
,所以我想知道这是否是问题所在;我只是按照我在网上看到的一个例子
谁能发现我哪里出错了,或者帮我解决这个问题?提前致谢!