我正在将一堆我们的webapps(在Jetty中运行)从log4j迁移到slf4j。以前,log4j会从jetty.home / resources / log4j.properties中找到log4j.properties文件。移动到slf4j后,找不到外部log4j.properties文件,所有内容都记录到stderror。
如果我在战争中构建相同的log4j.properties文件,一切都按预期工作(和以前一样)。我究竟做错了什么?我想在jetty.home / resources中使用外部日志配置,而不是将其构建到战争中。
在每次webapp战争中,我都有log4j-1.2.17
,slf4j-api-1.7.10
和活页夹slf4j-log4j12-1.7.10
。
Jetty start.ini是OPTIONS=Server,jmx,resources,websocket
答案 0 :(得分:0)
我能够通过在启动脚本中添加-Dlog4j.debug
java选项来解决这个问题。在这样做的过程中,我发现log4j正在从已经添加进行测试的战争中获取一个log4j.properties文件。
我发现修复此问题的两个选项是删除嵌入的配置文件,或添加启动选项。我能够将模块的log4j文件移动到它的根目录,以便将它从maven构建中排除。这样,它仍可在本地使用(用于测试),但不会内置于战争中。
另一个有用的选项是添加-Dlog4j.configuration=file:resources/log4j.properties
启动选项。这种方法似乎有点复杂,但会覆盖嵌入文件。