
《Linux运维实战:使用logrotate切割服务日志》
发布日期:2021-05-10 16:30:01
浏览次数:16
分类:精选文章
本文共 2754 字,大约阅读时间需要 9 分钟。
logrotate日志管理工具详解
一、logrotate简介
logrotate 是一款专业的日志文件管理工具,其主要功能包括日志轮转、压缩、删除以及创建新的日志文件。通过对日志文件的轮转操作,可以有效地管理大量日志数据,便于日志存储和分析。
logrotate 通常通过 cron 类型的计划任务自动执行,因此需要配置合适的轮转周期(如每天、每周或每月一次)。其默认行为是根据日志文件的大小或轮转次数来决定是否进行轮转。
此外,logrotate 可以根据需求配置压缩选项(支持 gzip 压缩)以及错误日志发送设置(支持发送至指定邮箱)。为了确保系统稳定运行,还可以定义前后处理脚本(如在轮转前修改文件属性,在轮转后重启服务等)。
二、logrotate配置参数说明
在配置 logrotate 时,主要参数包括以下几个:
compress
默认启用 gzip 压缩功能,将轮转后的日志文件压缩存储,便于后续归档管理。delaycompress
在轮转执行时, delaycompress 参数会确保当前仍在写入的日志文件在轮转后才进行压缩。其作用是避免在日志文件中出现压缩前后的不连贯情况。nocompress
取消压缩功能,适用于不需要压缩或者希望快速轮转的场景。copytruncate
在轮转过程中将当前正在写入的日志文件备份后直接截断(清空文件内容)。这种方式虽然效率较高,但有可能会导致部分日志数据丢失。nocopytruncate
与 copytruncate 相反,exclusiveCopyTruncate 命令仅备份日志文件而不会清空内容。这种方式保证了数据的完整性,但同时也会增加磁盘空间的占用。create mode owner group
在轮转时,logrotate 会通过指定的模式创建新的日志文件,默认值为create 0777 nobody nobody
,可以根据实际需求进行调整。 nocreate
取消创建新日志文件的功能,适用于只读取旧日志文件或已关闭写入的日志系统的情况。nodelaycompress
层叠配置与 delaycompress 相同,用于强制立即压缩日志文件。errors address
配置错误日志发送地址,可发送至指定邮箱,方便快速响应日志系统异常。if empty
默认值 True,即使当前日志文件为空也会执行轮转操作。notifempty
配置为 True 时,在日志文件为空时不会执行轮转。nomail
取消邮件发送功能,仅在本地处理日志文件。olddir directory
轮转后的日志文件将存放在指定目录中,需确保该目录与当前日志文件在同一文件系统。noolddir
轮转后将日志文件放置在与当前日志文件相同目录下的新文件中,适用于需要快速访问日志文件的场景。prerotate
在轮转前执行指定脚本,常用来修改文件权限或属性。postrotate
在轮转后执行后续脚本,例如重启服务或调用外部处理逻辑。daily, weekly, monthly
定义轮转周期,分别对应每天、每周和每月执行一次。rotate count
设置轮转保留的日志文件数量,默认为 5(代表保留五份完整的日志文件)。size
指定日志文件达到指定大小后触发轮转。支持单位为 byte(缺省)、 kilobyte(sizek)、 megabyte(sizem)。missingok
配置为 True 时,在日志丢失时不会报错,继续以下一个轮转文件处理。sharedscripts
在所有日志轮转完成后统一执行后续脚本,避免重复执行后续处理流程。dateext
使用当前日期作为日志文件扩展名。dateformat
定义日志文件的命名格式,常用于生成包含时间戳的文件名,如"%Y-%m-%d-%s"
; 三、logrotate实战示例
3.1 按照日志大小切割
vim /etc/logrotate.d/logrotate.conf{ rotate 5 size +100M copytruncate compress missingok notifempty dateext dateformat -%Y-%m-%d-%s}
说明:
- size +100M:指定日志文件达到 100MB 时触发轮转。
- rotate 5:保留 5 个完整的日志文件,旧文件将onafter de
- copytruncate:在轮转时,直接截断当前正在写入的日志文件。
3.2 手动测试
/sbin/logrotate -f /etc/logrotate.d/logrotate.conf
3.3 创建定时任务
echo "*/5 * * * * /usr/sbin/logrotate -f /etc/logrotate.d/logrotate.conf" > /etc/cron.d/logrotate
3.4 使用脚本进行日志切割
#!/bin/bashlogrotate_config=/etc/logrotate.d/logrotate.conflogrotate_dir=/data/logrotate# 执行 logrotate 配置文件logrotate -f -c "$logrotate_config" -d /data/log# 定时任务文件crontab -l | grep -i logrotate
四、日志切割脚本
配置脚本:
# 定义日志切割目录LOGROTE_DIR="/data/logrotate"# 定时任务脚本echo "*/5 * * * * /usr/sbin/logrotate -f -c /etc/logrotate.d/logrotate.conf" >> $LOGROTE_DIR/cron.jobcrontab -l | grep -i logrotate || echo "*/5 * * * * /usr/sbin/logrotate -f -c /etc/logrotate.d/logrotate.conf" > $LOGROTE_DIR/cron_root
脚本执行方式:
./logrotate.sh > /var/log/`date +\%Y-\%m-\%d`.log
总结
通过合理配置 logrotate 的参数,可以根据实际需求灵活管理日志文件的轮转、压缩和存储。建议在实际使用前参考 logrotate 的官方文档和最佳实践,避免遗漏重要的后处理脚本或配置参数。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年05月04日 11时43分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
hp工作站z8装Linux,惠普Z8G4双路最小工作站
2025-03-29
html上传图片直接保存到数据库中,Editor上传图片路径存入数据库中怎么弄?
2025-03-29
jaccard相似度_自然语言处理之文本相似度计算
2025-03-29
java 字符编码过滤器_java web中字符编码的过滤器(Filter - 1)
2025-03-29
java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!
2025-03-29
java开发区块链_用Java代码实现区块链
2025-03-29
Java指定区间返回随机数
2025-03-29
java攀枝花市房屋租售信息管理平台的设计与实现(ssm)
2025-03-29
java教学团队管理系统(ssm)
2025-03-29
java教学网站(ssm)
2025-03-29
java教学质量管理平台(ssm)
2025-03-29
java教师教学质量评估系统(ssm)
2025-03-29
java教师管理系统(ssm)
2025-03-29
java教师管理系统(ssm)
2025-03-29
java教师绩效考核过程管理系统(ssm)
2025-03-29
java教师课堂助手app(ssm)
2025-03-29
java教师课程管理与教学辅助系统(ssm)
2025-03-29
java教研室采购管理系统(ssm)
2025-03-29