发现问题:
一个应用,在跑定时任务,每分钟跑一次,arthas 发现定时任务每分钟都在执行,但是 日志文件却一条业务日志都没打印出来。
发现问题时候,是 下午15点,但是日志文件显示最近一条业务日志是凌晨5点打印出来的。
而且,日志文件的 时间戳,也是下午15点,即代表 往日志文件写的动作一直都在发生,但就是没写进日志文件中去。
logback配置的也是不丢失:
<appender name="ASYNC_APP" class="ch.qos.logback.classic.AsyncAppender"> <!-- 建议不丢失日志,设置为0 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的长度,该值会影响性能,默认值为256 --> <queueSize>512</queueSize> <appender-ref ref="APP" /> </appender>
根本原因:
应用所在的实例 磁盘满了,导致 业务正常执行,但日志文件未能正常记录到日志文件中。
logback.xml完整配置如下:
Logback的AsyncAppender与RollingFileAppender原理
<?xml version="1.0" encoding="UTF-8"?> <configuration> <define name="INSTANCE_CODE" class="com.XXX.amp.log.logback.InstanceCodePropertyDefiner"/> <property name="AMP_PRO_CODE" value="${AMP_PRO_CODE}"/> <property name="AMP_APP_CODE" value="${AMP_APP_CODE}"/> <property name="LOG_HOME" value="/web/logs/app/${AMP_PRO_CODE}/${AMP_APP_CODE}/${INSTANCE_CODE}"/> <appender name="APP" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/app.log%d{yyyy-MM-dd} </fileNamePattern> <maxHistory>7</maxHistory> </rollingPolicy> <encoder> <pattern>[%-5p] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%c] [%X{tid}] - %m%n </pattern> </encoder> </appender> <appender name="ASYNC_APP" class="ch.qos.logback.classic.AsyncAppender"> <!-- 建议不丢失日志,设置为0 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的长度,该值会影响性能,默认值为256 --> <queueSize>512</queueSize> <appender-ref ref="APP" /> </appender> <!-- log output to console --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%-5p] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%c] [%X{tid}] - %m%n</pattern> </encoder> </appender> <root level="info"> <if condition='"${devMode}".equals("true")'> <then> <appender-ref ref="CONSOLE"/> </then> </if> <appender-ref ref="ASYNC_APP" /> </root> </configuration>
标签:文件,MM,dd,yyyy,日志,每分钟,定时 From: https://www.cnblogs.com/sxdcgaq8080/p/18104160