日志终极总结 (3)

日志按天记录,单个日志文件最大不超过2000MB,考虑到有些bug按月规律出现,推荐历史日志保留30天

<rollingPolicy> <fileNamePattern>${LOG_DIR}/all-%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy> <!-- 每个日志文件大小不超过2GB --> <maxFileSize>2000MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy>

在出现问题之后,需要立即根据日志定位问题。对于INFO及以上级别的日志,要求按照一定顺序,输出以下必要的信息。参考日志格式定义

<encoder charset="UTF-8"> <pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}] %level [%mdc{invokeNo}] %C{0}:%line - %message%n</pattern> </encoder>

一个完整的Appender配置如下

<?xml version="1.0" encoding="UTF-8"?> <configuration> <property resource="log.properties"/> <contextName>${APP_NAME}</contextName> <appender> <encoder charset="UTF-8"> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <appender> <file>${LOG_DIR}/all.log</file> <rollingPolicy> <!-- 日志每天进行rotate --> <fileNamePattern>${LOG_DIR}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy> <!-- 每个日志文件大小不超过2GB --> <maxFileSize>2000MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder charset="UTF-8"> <pattern>${LOG_PATTERN}</pattern> </encoder> <filter> <level>info</level> </filter> </appender> <appender> <file>${LOG_DIR}/all-error.log</file> <filter> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy> <fileNamePattern>${LOG_DIR}/all-error-%d{yyyy-MM- dd}.%i.log</fileNamePattern> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy> <!-- 每个日志文件大小不超过2GB --> <maxFileSize>2000MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder charset="UTF-8"> <pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}] %level [%mdc{invokeNo}] %C{0}:%line - %message%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="all"/> <appender-ref ref="all-error"/> <appender-ref ref="console"/> </root> </configuration>

7、Log4j2配置参考 配置说明

统一使用log4j2.xml配置,log4j2.xml 文件放在 resource目录下。

注意Logger间的继承关系,推荐additivity设置false:

​ 子logger会默认继承父logger的appender,将它们加入到自己的Appender中;除非加上了additivity="false",则不再继承父logger的appender。

​ 子logger只在自己未定义输出级别的情况下,才会继承父logger的输出级别。

将日志输出到文件当中,考虑到RollingRandomAccessFile比RollingFile更灵活,推荐统一使用RollingRandomAccessFile。

Log文件位置和命名,目前Log文件的位置统一放在相同目录下面。

文件名 描述
/export/home/logs   默认日志路径(所有日志的根路径)  
/export/home/logs/${SYSTEM_NAME}/${APP_NAME}   log.properties中配置的日志全路径LOG_DIR  
${LOG_DIR}/all.log   必选  
${LOG_DIR}/ all-%d{yyyy-MM-dd}.log   All历史文件命名  
${LOG_DIR}/all_error.log   必选  
${LOG_DIR}/sql.log   可选  

日志按天记录,单个日志文件最大不超过3000MB,考虑到有些bug按周规律出现,推荐历史日志保留14天。

<RollingRandomAccessFile immediateFlush="true" fileName="${LOG_DIR}/all.log" filePattern="${LOG_DIR}/all-%d{yyyy-MM-dd}-%i.log"> <Policies> <SizeBasedTriggeringPolicy size="3GB" /> <TimeBasedTriggeringPolicy interval="8" modulate="true" /> <!-- 最多备份14天以内||日志文件大小达到50GB的日志|| 文件数量超过20此处为策略限制,Delete中可以按自己需要用正则表达式编写 --> <DefaultRolloverStrategy> <Delete basePath="${filePath}" maxDepth="1"> <IfLastModified age="14d" /> <IfAccumulatedFileSize exceeds="50 GB" /> <IfAccumulatedFileCount exceeds="20" /> </Delete> </DefaultRolloverStrategy>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyszs.html