Java 如何确定未记录日志的原因?
我正在寻找某种清单,它将帮助我解决以下问题: 我有一个在Tomcat8上运行的Web应用程序。我使用log4j2v2.1和apachecommons日志v1.2。我的应用程序在几天内记录良好,然后突然停止记录。没有记录任何异常。没什么 我无法理解为什么会发生这种情况,以及根本原因是什么。我也不知道如何找到根本原因 顺便说一句,系统有足够的可用磁盘空间~500GB,tomcat日志(如localhost_访问日志)和其他日志继续不间断地记录 编辑:根据请求,发布log4j2配置-Java 如何确定未记录日志的原因?,java,logging,log4j,log4j2,apache-commons-logging,Java,Logging,Log4j,Log4j2,Apache Commons Logging,我正在寻找某种清单,它将帮助我解决以下问题: 我有一个在Tomcat8上运行的Web应用程序。我使用log4j2v2.1和apachecommons日志v1.2。我的应用程序在几天内记录良好,然后突然停止记录。没有记录任何异常。没什么 我无法理解为什么会发生这种情况,以及根本原因是什么。我也不知道如何找到根本原因 顺便说一句,系统有足够的可用磁盘空间~500GB,tomcat日志(如localhost_访问日志)和其他日志继续不间断地记录 编辑:根据请求,发布log4j2配置- <?xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%p [%t] %c{1}.%M(%L) | %m%n"/>
</Console>
<RollingFile name="RollingFile" fileName="../logs/app.log"
filePattern="../app/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d{ISO8601} [REQ_ID|%X{REQUEST_UUID}] %p [%t] %c{1}.%M(%L) | %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="5 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger ... />
...
<Root level="debug">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
%d{ISO8601}[REQ_ID |%X{REQUEST_UUID}]%p[%t]%c{1}。%M(%L)|%M%n
...
通常的罪魁祸首是该文件被日志旋转工具重命名。如果在几天后发生这种情况,则会将日志旋转工具配置为在文件达到一定大小时将其移开。然后这些工具通常会压缩日志文件
发生的情况是:
解决方案:在Java日志记录工具中配置日志旋转,或将其配置为与外部日志旋转工具一起工作。日志旋转是在log4j2.xml文件中的log4j2配置中配置的。还有别的办法吗?@Rishabh,你100%确定没有人在操作系统级别配置日志旋转器吗?在这种情况下,您需要使用远程调试选项启动应用程序。然后,当它停止工作时,您可以使用远程调试器连接到它。我猜你在某个地方遇到了死锁。是的,我确信在操作系统级别没有任何日志循环,因为我自己已经配置了它。将按建议调试“死锁”。请发布完整的log4j配置文件。