Tomcat应用程序说“无法配置日志记录系统。找不到log.properties。”

时间:2009-10-27 01:08:45

标签: java tomcat logging log4j

我有一个嵌入式tomcat应用程序,每当我启动时,我都会看到这个错误打印到控制台两次:

Unable to configure the logging system.  No log.properties was found.

这看起来很愚蠢,但我已经完成了一些谷歌搜索和搜索stackoverflow,似乎找不到有人遇到这个问题。

我的主要课程看起来大致如下:

public class AuthServerEntryPoint {
  static {
    org.apache.log4j.PropertyConfigurator.configure("conf/log4j.properties");
  }
public static void main(String[] args) {
  // ...
}

“conf / log4j.properties”包含一个看似有效的配置:

log4j.appender.mainAppend=org.apache.log4j.ConsoleAppender
log4j.appender.mainAppend.layout=org.apache.log4j.PatternLayout
log4j.appender.mainAppend.layout.ConversionPattern=%d %p [%t] %c -- %m%n 

log4j.appender.fileAppend=org.apache.log4j.FileAppender
log4j.appender.fileAppend.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppend.layout.ConversionPattern=%d %p [%t] %c - %m%n 
log4j.appender.fileAppend.file=logs/myservice.log

log4j.rootLogger = info, fileAppend
log4j.logger.com.mycompany.myservice = debug, fileAppend

日志记录确实有效 - 即日志正确写入myservice.log。那是什么给出了什么?

谢谢! -Carl

2 个答案:

答案 0 :(得分:1)

默认情况下,log4j将在类路径中查找日志属性文件。将您的webapp的日志属性配置文件放入其WEB-INF / classes目录中; e.g。

$CATALINA_HOME/webapps/<yourApp>/WEB-INF/classes/log4j.properties

参考文档建议使用简单的方法来获取Web应用程序。这是我自己用于webapp日志记录的方法。

还有其他各种方法可以在Tomcat上配置Log4j日志记录。您的Tomcat可能(部分)配置为使用其中一个,但有些事情没有做得很好。

通过系统属性配置Tomcat'log4j日志记录是一个选项,可以避免找出log4j正在查找的位置......以及出了什么问题。但是,您将继续创建/使用自定义启动脚本,或者在启动Tomcat之前必须记住设置环境变量。

参考文献:

答案 1 :(得分:1)

通过嵌入式Tomcat应用,您是指从Java代码启动Tomcat并使用类org.apache.catalina.startup.Embedded吗?

如果是,我的猜测是Tomcat在使用脚本时可能无法找到在catalina.sh(或等效)中设置的日志配置文件:

LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"

奇怪的是这个文件被称为logging.properties,而不是log.properties,所以我真的不确定。我没有查看Tomcat的消息来源,也许他们在那里做了某种黑魔法。

您是否可以尝试将$CATALINA_BASE/conf/logging.properties重命名为log.properties(或不),并将其放在应用的类路径中(或设置-Djava.util.logging.config.file)?