Logrotate 是一个 Linux 系统下的日志文件管理工具,它用来自动管理系统中的日志文件,防止日志文件无限增长而占用过多磁盘空间。Logrotate 的主要功能包括:
- 日志文件的轮转:Logrotate 可以按照预先设置的规则对日志文件进行轮转,例如按照文件大小、文件日期等进行轮转,以防止单个日志文件过大影响系统性能或磁盘空间。
- 日志文件的压缩:在轮转后,Logrotate 可以选择性地对旧的日志文件进行压缩,以减少磁盘占用空间。
- 日志文件的删除:Logrotate 可以根据用户配置的保留期限,定期删除旧的日志文件,以避免过多的历史日志文件堆积。
- 执行脚本:在日志轮转、压缩或删除等操作完成后,Logrotate 还可以执行用户指定的脚本,以便进行额外的操作,比如发送通知邮件或触发其他任务。
Logrotate 的配置文件通常位于 /etc/logrotate.conf
或 /etc/logrotate.d/
目录下,用户可以通过编辑这些配置文件来定义日志文件的轮转规则、压缩设置、保留期限等。以下是一个简单的 Logrotate 配置文件示例:
在 /etc/logrotate.d/ 目录下新建配置文件: nano /etc/logrotate.d/nginx
/var/log/nginx/mysite/*.log {
daily
rotate 7
missingok
notifempty
create 0644 root root
dateext
dateformat -%Y-%m-%d
olddir /var/log/nginx/mysite/logrotate/
compress
delaycompress
sharedscripts
postrotate
systemctl reload nginx
endscript
extension .log
}
/var/log/nginx/mysite/*.log
: 定义了要进行日志轮转的日志文件路径,通配符*
表示匹配该目录下所有的.log
文件。daily
: 指定日志文件每天轮转一次,即每天生成一个新的日志文件。rotate 7
: 保留历史日志文件的数量,这里设置为保留最近的 7 个历史日志文件。missingok
: 如果日志文件不存在,则忽略不报错。notifempty
: 如果日志文件为空,则不进行轮转。create 0644 root root
: 指定创建新日志文件的权限和所有者,这里设置为权限为 0644,所有者为 root。dateext
: 在旋转后的日志文件名中添加日期扩展,以区分不同日期的日志文件。dateformat -%Y-%m-%d
: 设置日期格式为年-月-日。olddir /var/log/nginx/mysite/logrotate/
: 指定旧日志文件存放的目录,将旧日志文件移动到该目录中。compress
: 压缩旧日志文件,使用 gzip 进行压缩。delaycompress
: 在进行压缩时延迟压缩上一次轮转周期生成的日志文件。sharedscripts
: 在日志文件轮转过程中只执行一次 postrotate 脚本,而不是每个日志文件轮转时都执行。postrotate ... endscript
: 在日志文件轮转后执行的命令或脚本块,这里使用systemctl reload nginx
命令重新加载 Nginx 服务,以应用新的日志文件配置。extension .log
: 指定日志文件的扩展名为.log
。
Comments NOTHING