在CentOS上自动化处理Java日志,可结合工具配置与脚本实现,核心方法如下:
Logrotate工具
sudo yum install logrotate
/etc/logrotate.d/
下创建Java日志配置文件(如java-app
),设置轮转周期、保留天数、压缩等参数,例如:/var/log/java-app/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root root
}
Shell脚本+定时任务
/usr/local/bin/process_java_logs.sh
)实现日志压缩、删除等操作,例如:#!/bin/bash
LOG_DIR="/var/log/java-app"
find $LOG_DIR -name "*.log" -mtime +7 -exec gzip {} \;
find $LOG_DIR -name "*.log.*.gz" -mtime +30 -exec rm {} \;
chmod +x /usr/local/bin/process_java_logs.sh
crontab -e
添加0 2 * * * /usr/local/bin/process_java_logs.sh
(每日凌晨2点执行)。ELK Stack(日志分析场景)
sudo yum install elasticsearch logstash kibana
/var/log/java-app/
读取),通过Elasticsearch存储,Kibana可视化分析。Java日志框架配置
log4j2.xml
或logback.xml
中设置滚动策略,例如按时间或文件大小切割:<!-- Log4j2示例:按天切割,保留7天 -->
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="7"/>
</RollingFile>
说明:
root
,属组为adm
)。