Quartz调度程序不显示Log4j消息

我正在尝试配置我的Quartz调度程序以支持日志记录。 我曾尝试做以下事情:

在我的应用程序的classes文件夹中添加了log4j.xml。 相同的代码是:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern= %d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=debug, stdout 

在我的调度程序类中添加了以下语句:

 static Logger logger = Logger.getLogger("QuartzReport.class"); logger.info("Info"); 

但是,控制台在启动时显示以下消息:

 log4j:WARN No appenders could be found for logger (org.quartz.simpl.SimpleThreadPool). log4j:WARN Please initialize the log4j system properly. 

请告诉我,我是否遗漏了某些东西。

此致,伊布

你遗漏了两点:

  1. 您的配置文件是属性文件,而不是XML。 所以你应该把它保存为’log4j.properties’;
  2. 确保第1项中提到的文件位于应用程序的类路径中(假设正在使用最近的log4j实现)。

祝好运,

道格拉斯

还尝试使用此行更新log4j配置

log4j.logger.org.quartz = debug,stdout

您可以使用配置文件(属性文件)以编程方式(如在QuartzReport类的main方法中)配置代码。

较新版本的Log4j将尝试从您的类路径加载名为log4j.properties的文件,并使用它自动配置您的记录器。

在您的情况下, BasicConfigurator.configure()调用将覆盖您的属性文件中的任何定义(即,您的属性文件被忽略)。 日志显示的输出遵循您在PatternLayout构造函数中提供的模式。 有关如何定义此类模式的更多详细信息,请参见PatternLayout类文档 。