最近为实现日志的分类,压缩,将log4j升级为log4j2。虽然有很多文章对其中配置讲的很详细,但实践中仍有不少细节值得补充,虽然看着比较零散,但希望对再次遇到这些问题的有所帮助。
路径配置:
改相对路径为绝对路径,解决日志产生点不固定的问题。
<property name="log_home">${sys:PROJECT_HOME}</property>
<Property name="log_path">log</Property>
绝对路径/${log_home}/${log_path}/info
相对路径${log_path}/info
问题1:高可用是否能让日志在指定位置产生。
问题2:从相对路径到绝对路径的调整原因,猜测1:/,猜测2:sys路径
jar包冲突
在调整log4j到log4j2的过程中,产生了一些jar包冲突
问题1:组件内置日志包和log4j2存在冲突:解决方案,发现后排除。(待验证)
问题2:误引入log4j的包,解决方案,注意代码相关问题
正确日志jar包:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
错误日志jar包:
import org.apache. log4j.LogManager;
import org.apache. log4j.Logger;
nohup.out显示问题:
修改&为 >/dev/null 2>&1 &,但发现错误日志无法正常显示(推测为jar包冲突问题),暂时改为 >/dev/null &
日志压缩问题:
日志有两种压缩方式
定大小压缩:<SizeBasedTriggeringPolicy size="20MB"/>
定期压缩:<TimeBasedTriggeringPolicy modulate="true" interval="1"/>
注:定期压缩根据设置的压缩格式来压缩,注意压缩包末尾的时间单位
压缩格式:filePattern="/${log_home}/${log_path}/info/info - %d{yyyy-MM-dd}.log.gz"
或者两者皆有
gc日志问题:
有时候程序运行中会产生gc日志,
日志内容包括正常运行的记录,格式如下:
2019-07-11T11:14:46.462+0800: 85483.378: [GC (Allocation Failure) [PSYoungGen: 653311K->15167K(657408K)] 909738K->271594K(2022912K), 0.0302089 secs] [Times: user=0.15 sys=0.00, real=0.03 secs]
错误日志:oom的记录。
问题gc日志产生方式,压缩方式,自动删除方式暂不清楚
滚动删除
网上其实有很多滚动删除的示例,但在实际操作中遇到了滚动删除失败的问题,推测可能为权限问题,如果该问题解决,我会再讲下其中问题。