在CentOS系统下,可以使用logrotate
工具来实现Java应用程序的日志切割。以下是配置和使用logrotate
的步骤:
- 确保已经安装了
logrotate
。如果没有安装,可以使用以下命令安装:
sudo yum install logrotate
- 创建一个新的
logrotate
配置文件,例如/etc/logrotate.d/java-app
。使用文本编辑器打开文件,例如:
sudo vi /etc/logrotate.d/java-app
- 在配置文件中添加以下内容:
/path/to/your/java/app/logs/*.log { daily rotate 7 compress missingok notifempty create 640 root adm sharedscripts postrotate if [ -f /path/to/your/java/app/logs/your_app.log ]; then /usr/bin/killall -HUP java_app_process_name fi endscript }
请将/path/to/your/java/app/logs/*.log
替换为实际的日志文件路径,将java_app_process_name
替换为Java应用程序的进程名称。
这里的配置表示:
- 每天切割日志文件(
daily
) - 保留7天的日志文件(
rotate 7
) - 压缩旧的日志文件(
compress
) - 如果日志文件不存在,不报错(
missingok
) - 如果日志文件为空,不进行切割(
notifempty
) - 创建新的日志文件,权限为640,属主为root,属组为adm(
create 640 root adm
) - 在切割日志后执行
postrotate
脚本,发送HUP信号给Java应用程序进程,通知它重新打开日志文件
-
保存并关闭配置文件。
-
测试
logrotate
配置是否正确:
sudo logrotate -f /etc/logrotate.d/java-app
如果没有错误信息,说明配置正确。
现在,logrotate
将按照配置文件中的设置自动切割Java应用程序的日志文件。如果需要手动触发日志切割,可以使用以下命令:
sudo logrotate -f /etc/logrotate.d/java-app
这将强制执行logrotate
配置,即使距离上次切割时间不足一天。