logrotate通过按时间或大小轮转日志,压缩并删除旧文件,结合daily、rotate、compress等参数及copytruncate或postrotate机制,实现Nginx和Tomcat等服务的日志管理,避免磁盘空间耗尽。

Linux系统中日志文件会随着时间不断增长,如果不加以管理,可能占用大量磁盘空间,甚至影响系统性能。logrotate 是 Linux 下用于自动轮转、压缩和清理日志文件的工具,支持按大小、时间(如每天、每周)等条件进行切割,并可针对不同服务做独立配置。
logrotate 通常由 cron 每天自动执行,读取配置文件判断哪些日志需要处理。它能完成以下操作:
配置文件一般位于:
- 主配置文件:/etc/logrotate.conf
- 配置片段目录:/etc/logrotate.d/(推荐将各服务配置放在此目录下)
以常见的 Nginx 和 Tomcat 为例,展示如何为特定服务设置独立的日志切割策略。
1. 为 Nginx 配置日志切割
创建配置文件:
vim /etc/logrotate.d/nginx
写入如下内容:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0644 www-data adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1 || true
endscript
}
参数说明:
2. 为 Tomcat 配置日志切割
Tomcat 日志通常位于 /opt/tomcat/logs/,比如 catalina.out。
创建配置文件:
vim /etc/logrotate.d/tomcat
内容如下:
/opt/tomcat/logs/catalina.out {
copytruncate
daily
rotate 30
compress
missingok
notifempty
size 100M
}
关键点说明:
⚠️ 注意:copytruncate 有一定风险,在复制和截断之间可能丢失少量日志,但对大多数场景可接受。
配置完成后,建议先手动测试,避免正式运行出错。
1. 模拟运行(查看会做什么):
logrotate -d /etc/logrotate.d/nginx
-d 表示 debug 模式,不会真正执行操作,仅输出计划行为。
2. 强制执行一次轮转(测试实际效果):
logrotate -f /etc/logrotate.d/nginx
-f 表示强制轮转,可用于验证配置是否生效。
3. 查看状态信息:
logrotate 记录上次处理时间的状态文件在:
/var/lib/logrotate/status
可用命令查看:cat /var/lib/logrotate/status
服务未重新加载导致日志仍写入旧文件?
确保在 postrotate 中正确发送信号或 reload 服务。例如 Apache 使用 reload,Java 应用若支持 SIGHUP 可用 kill -HUP。
想按周或每月切割?
替换 daily 为 weekly 或 monthly 即可。
想同时满足时间和大小条件?
可以并列使用,只要任一条件满足就会触发轮转。例如既有 daily 又有 size 100M。
多个服务共用一个日志目录怎么办?
可在配置中列出多个路径,或使用通配符,但建议每个服务单独配置,便于维护。
基本上就这些。合理利用 logrotate,能让系统日志整洁有序,避免磁盘被撑爆。关键是根据服务特点选择 copytruncate 还是 postrotate 方式,并定期检查配置是否生效。
以上就是Linux日志怎么切割_Linux日志通过logrotate按服务名切割的详细配置教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号