Tomcat 应用程序显示“无法配置日志系统。没有找到 log.properties。”
题
我有一个嵌入式 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。那么什么给出呢?
谢谢!-卡尔
解决方案
通过嵌入式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
)?
其他提示
默认情况下,log4j 将在类路径上查找日志记录属性文件。将您的 web 应用程序的日志记录属性配置文件放入其 WEB-INF/classes 目录中;例如
$CATALINA_HOME/webapps/<yourApp>/WEB-INF/classes/log4j.properties
这是参考文档推荐的让 Web 应用程序使用 Log4j 的简单方法。这就是我自己用于 Web 应用程序日志记录的方法。
还有多种其他方法可以在 Tomcat 上配置 Log4j 日志记录。您的 Tomcat 可能已(部分)配置为使用其中之一,但某些事情尚未完成。
通过系统属性配置 Tomcat 的 log4j 日志记录是一个避免弄清楚 log4j 正在查找的位置的选项...以及出了什么问题。但随后您将不得不创建/使用自定义启动脚本,或者必须记住在启动 Tomcat 之前设置环境变量。
参考:
- 在 Tomcat 5.5 上配置日志记录
- 在 Tomcat 6 上配置日志记录
- 的“Tomcat 下的默认初始化”部分 Log4j手册