gpt4 book ai didi

java - Log4j2 Servlet 3.0 不记录

转载 作者:行者123 更新时间:2023-11-28 23:33:11 30 4
gpt4 key购买 nike

我有一个在 Tomcat 7 服务器上运行的 JAX-RS 2.0 应用程序,我使用 log4j2 和 SLF4J 将服务器日志记录到一个文件中。

在生产环境中运行服务器时,我似乎无法在我的日志文件中正确显示任何日志,尽管当我运行集成测试时,日志会正确输出。

在生产中,日志只是重定向到控制台。

我的 log4j2.xml 文件位于 WEB-INF/classes 文件夹中,我也包含了所有必要的依赖项。

我的配置文件是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="file" fileName="log/trace.log" append="true" filePattern="log/trace.%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %X %logger{36} - %msg%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="my.package" level="TRACE" additivity="false">
<AppenderRef ref="file"/>
</Logger>
<Root level="WARN">
<AppenderRef ref="file"/>
</Root>
</Loggers>
</Configuration>

web.xml 不需要配置(我正在按照 log4j2 网站上的文档进行操作)。

编辑我已尝试将 Root 级别设置为 TRACE 但所有内容仍会重定向到控制台。文件 log/trace.log 本身已创建,只是从未写入过。我也尝试设置 immediateFlush=true 但这也没有任何影响。

最佳答案

我注意到您将状态日志记录(log4j 内部日志记录)设置为 TRACE。这会将 log4j 内部初始化消息转储到控制台。这就是你的意思?

否则,您提供的配置显示没有记录器具有指向 ConsoleAppender 的 appender-ref。因此,如果您还看到您的应用程序日志正在输出到控制台(除了 log4j 的状态日志消息之外),我怀疑还有 另一个 log4j2.xml(或 log4j2-test.xml)配置文件在某处的类路径中。

幸运的是,log4j 的状态日志还应该显示 log4j 配置文件的位置,因此您可以确认实际加载了哪个配置文件。您可以通过设置 <Configuration status="WARN"> 来关闭状态记录确认一切正常后。

关于java - Log4j2 Servlet 3.0 不记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27869748/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com