带有 Jetty 的外部 log4j 属性 文件
External log4j property file with Jetty
我正在将我们的大量 Web 应用程序(运行 在 Jetty 中)从 log4j 迁移到 slf4j。以前,log4j 会从 jetty.home/resources/log4j.properties 中找到 log4j.properties 文件。移动到 slf4j 后,找不到外部 log4j.properties 文件,所有内容都记录到 stderror。
如果我在 war 中构建相同的 log4j.properties 文件,一切都会按预期工作(和以前一样)。我究竟做错了什么?我想在 jetty.home/resources 中使用外部日志记录配置,而不是将其构建到 war.
在每个网络应用 war 中,我有 log4j-1.2.17
、slf4j-api-1.7.10
和活页夹 slf4j-log4j12-1.7.10
。
码头 start.ini 是 OPTIONS=Server,jmx,resources,websocket
我可以通过向启动脚本添加 -Dlog4j.debug
java 选项来解决这个问题。在这样做的过程中,我发现 log4j 正在从已添加用于测试的 war 中获取一个 log4j.properties 文件。
我找到的解决此问题的两个选项是删除嵌入式配置文件或添加启动选项。我能够将模块的 log4j 文件移动到它的根目录,以便它被排除在 Maven 构建之外。这样,它仍然在本地可用(用于测试)但未内置到 war.
另一个可行的选项是添加 -Dlog4j.configuration=file:resources/log4j.properties
到启动选项。这种方法看起来有点复杂,但会覆盖嵌入文件。
我正在将我们的大量 Web 应用程序(运行 在 Jetty 中)从 log4j 迁移到 slf4j。以前,log4j 会从 jetty.home/resources/log4j.properties 中找到 log4j.properties 文件。移动到 slf4j 后,找不到外部 log4j.properties 文件,所有内容都记录到 stderror。
如果我在 war 中构建相同的 log4j.properties 文件,一切都会按预期工作(和以前一样)。我究竟做错了什么?我想在 jetty.home/resources 中使用外部日志记录配置,而不是将其构建到 war.
在每个网络应用 war 中,我有 log4j-1.2.17
、slf4j-api-1.7.10
和活页夹 slf4j-log4j12-1.7.10
。
码头 start.ini 是 OPTIONS=Server,jmx,resources,websocket
我可以通过向启动脚本添加 -Dlog4j.debug
java 选项来解决这个问题。在这样做的过程中,我发现 log4j 正在从已添加用于测试的 war 中获取一个 log4j.properties 文件。
我找到的解决此问题的两个选项是删除嵌入式配置文件或添加启动选项。我能够将模块的 log4j 文件移动到它的根目录,以便它被排除在 Maven 构建之外。这样,它仍然在本地可用(用于测试)但未内置到 war.
另一个可行的选项是添加 -Dlog4j.configuration=file:resources/log4j.properties
到启动选项。这种方法看起来有点复杂,但会覆盖嵌入文件。