我有一个嵌入式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
答案 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
)?