我有一个嵌入式 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 之前设置环境变量。

参考:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top