日志清理工具 - logrotate
logrotate
是一个用于管理和轮换日志文件的工具,它主要用于控制日志文件的大小、防止日志文件占用过多的磁盘空间,以及自动删除旧的日志文件。logrotate
通常在 Linux 系统上运行,并且可以通过配置文件自动处理日志文件的轮换和压缩。
一、功能介绍
logrotate
具有以下主要功能:
- 日志轮换:当日志文件达到指定大小或时间时,
logrotate
会将当前日志文件重命名,并开始一个新的日志文件。 - 日志压缩:可以在日志轮换之后对旧日志进行压缩,以节省磁盘空间。
- 日志删除:可以设置保留的旧日志文件的数量,并自动删除超出保留数量的旧日志。
- 日志的周期性管理:支持基于时间(如每天、每周、每月)或文件大小的日志轮换。
- 钩子脚本:可以在日志轮换前后执行自定义脚本,以进行额外的处理。
二、配置文件
logrotate
的配置文件通常位于 /etc/logrotate.conf
,而其他日志文件的具体配置可能会放在 /etc/logrotate.d/
目录下的各个配置文件中。
2.1 配置示例
下面是一个简单的 logrotate
配置示例:
/var/log/myapp/*.log {
daily # 每天轮换日志
rotate 7 # 保留7个轮换的日志文件
compress # 轮换后压缩日志文件
missingok # 如果日志文件不存在,不报错
notifempty # 如果日志文件为空,不进行轮换
create 0640 root root # 创建新的日志文件时的权限和属主
postrotate # 轮换后执行的命令
systemctl reload myapp.service
endscript
}
daily
:指定日志文件轮换的频率(可选 daily
、weekly
、monthly
等)。
rotate
:指定保留的旧日志文件数量。
compress
:指定是否压缩旧的日志文件。
missingok
:如果日志文件不存在,不报错也不中止操作。
notifempty
:如果日志文件为空,不进行轮换。
create
:创建新的日志文件时的权限和所有者。
postrotate
和 endscript
:轮换后执行的命令,例如重新加载服务以便新日志文件生效。
另外,针对那些不能关闭并重新打开日志文件的服务或应用程序可以使用copytruncate
选项,当使用 copytruncate
选项时,logrotate
会执行以下操作:
- 复制当前日志文件:首先将当前的日志文件复制为一个新文件,通常带有日期或数字的后缀。
- 截断原日志文件:然后,将原来的日志文件截断(内容清空),以便继续接受新日志数据的写入。
2.2 使用方法
- 手动测试配置:可以通过命令
logrotate -d /etc/logrotate.conf
来测试配置文件,而不实际进行日志轮换。 - 强制轮换:使用
logrotate -f /etc/logrotate.conf
可以强制立即进行日志轮换,而不考虑日志文件是否达到配置的条件,正常可以去掉。 - 查看日志:
logrotate
的运行日志通常会记录在/var/lib/logrotate/status
中。
通过合理的配置和使用 logrotate
,可以有效地管理和维护系统的日志文件,确保系统的稳定性和日志管理的效率。
-- EOF --
最后更新于:
2024-09-01 10:50
发表于:
2021-12-22 10:28
标签:
运维