SLF4J-Log4j记录器无法记录日志

12

我第一次尝试使用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- 日志,但我的日志语句都没有被记录下来。

我在考虑:

  1. 我没有正确配置 log4j.properties,或者
  2. 我没有正确配置 slf4j-log4j,或者
  3. 这是一个类路径问题,可能 WAR 找不到 log4j.properties(虽然我想象我会看到错误或警告),或者
  4. 我没有正确使用 SLF4J(API 本身),或者
  5. 我从网上看到的示例只是按照它的方法进行,我从未实际创建过名为 MonitorAppender 的东西,所以我想知道这是否是问题所在。

有谁能发现我的错误,或帮我排除故障?先感谢您!


1
请检查您的类路径中是否没有 logback jars,否则 slf4j 将尝试使用 logback。 - Augusto
@Augusto - 感谢您的建议(+1),但不,这些JAR包不在类路径中。 - IAmYourFaja
2
SLF4J不会偏好于一个实现而不是另一个。它会警告多个绑定。另请参阅http://www.slf4j.org/codes.html#multiple_bindings。 - Ceki
感谢@Ceki (+1)的反馈 - 你可能是全世界最合适的人来询问这个问题 - 这里有什么看起来配置不正确的地方吗? - IAmYourFaja
1个回答

16
您的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

'*'不被支持,因此不是有效的。


1
谢谢@Ceki (+1) - 有人能帮忙找出这些错误吗? - IAmYourFaja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接