Java Log4j2 Servlet 3.0未记录日志
我有一个JAX-RS2.0应用程序在Tomcat7服务器上运行,我使用log4j2和SLF4J将服务器日志记录到一个文件中 在生产环境中运行服务器时,我似乎无法在日志文件中正确显示任何日志,尽管在运行集成测试时,日志输出是正确的 在生产中,日志只是重定向到控制台 我的log4j2.xml文件位于Java Log4j2 Servlet 3.0未记录日志,java,tomcat,jakarta-ee,servlets,log4j2,Java,Tomcat,Jakarta Ee,Servlets,Log4j2,我有一个JAX-RS2.0应用程序在Tomcat7服务器上运行,我使用log4j2和SLF4J将服务器日志记录到一个文件中 在生产环境中运行服务器时,我似乎无法在日志文件中正确显示任何日志,尽管在运行集成测试时,日志输出是正确的 在生产中,日志只是重定向到控制台 我的log4j2.xml文件位于WEB-INF/classes文件夹中,我还包括了所有必要的依赖项 我的配置文件如下所示: <?xml version="1.0" encoding="UTF-8"?> <Configu
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网站上的文档)
编辑
我已经尝试将
根目录
级别设置为跟踪
,但所有内容仍然被重定向到控制台。文件log/trace.log
本身就是创建的,只是从来没有写入。我还尝试设置了immediateFlush=true
,但也没有任何影响。我注意到您将状态日志(log4j内部日志)设置为跟踪。这将把log4j内部初始化消息转储到控制台。这就是你的意思吗
否则,您提供的配置将显示没有具有指向ConsoleAppender的appender ref的记录器。
因此,如果您还看到您的应用程序日志被输出到控制台(除了log4j的状态日志消息之外),我怀疑在类路径的某个地方还有另一个log4j2.xml(或log4j2 test.xml)配置文件
幸运的是,log4j的状态日志还应该显示log4j配置文件的位置,因此您可以确认实际加载的配置文件。
确认所有工作正常后,您可以通过设置
关闭状态记录 我想出来了
原来我使用的是gretty
插件和gradle
,它包含自己的日志包(logback库)
它使用了自己的内部
logback.xml
,该文件被重定向到控制台。我通过使用自己的配置覆盖内部logback.xml
(使用logback
的配置)解决了这个问题,现在一切正常了 嗯,就是这样,目录结构中没有另一个log4j2.xml,所以我仍然不知道为什么输出会直接发送到控制台。创建了一个日志文件,但它从未附加到。log4j的状态日志打印到控制台。这包括加载的log4j配置文件的位置。那个位置对吗?为了帮助确定原因,可以添加log4j状态日志的输出吗?这将显示是否存在任何初始化问题。此问题已报告为,现在已修复。明天我将发布Gretty 1.1.9版,它将包含修复程序。