用途: 按照规则(日,周,日)对日志进行切割,压缩,清除
安装
centos系统默认安装(系统使用该工具对系统日志进行切割)
yum -y install logrotate
配置文件说明
cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
配置参数 | 说明 |
---|---|
weekly | 默认每一周执行一次rotate轮转工作 |
rotate 4 | 保留多少个日志文件(轮转几次).默认保留四个 |
create | 自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志 |
dateext | 切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式 |
include /etc/logrotate.d | # 将 /etc/logrotate.d/ 目录中的所有文件都加载进来 |
其他重要参数说明
配置日志切割参数
参数 | 参数说明 |
---|---|
compress | 通过gzip 压缩转储以后的日志 |
nocompress | 不做gzip压缩处理 |
copytruncate | 用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。 |
nocopytruncate | 备份日志文件不过不截断 |
create mode owner group | 轮转时指定创建新文件的属性,如create 0777 nobody nobody |
nocreate | 不建立新的日志文件 |
delaycompress | 和compress 一起使用时,转储的日志文件到下一次转储时才压缩 |
nodelaycompress | 覆盖 delaycompress 选项,转储同时压缩。 |
missingok | 如果日志丢失,不报错继续滚动下一个日志 |
errors address | 专储时的错误信息发送到指定的Email 地址 |
ifempty | 即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。 |
notifempty | 当日志文件为空时,不进行轮转 |
mail address | 把转储的日志文件发送到指定的E-mail 地址 |
nomail | 转储时不发送日志文件 |
olddir directory | 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 |
noolddir | 转储后的日志文件和当前日志文件放在同一个目录下 |
sharedscripts | 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本 |
prerotate | 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行 |
postrotate | 在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行 |
daily | 指定转储周期为每天 |
weekly | 指定转储周期为每周 |
monthly | 指定转储周期为每月 |
rotate count | 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份 |
dateext | 使用当期日期作为命名格式 |
dateformat .%s | 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数 |
size(或minsize) log-size | 当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem). |
- 示例
cat /etc/logrotate.d/nginx
/var/log/nginx/*log {
create 0644 nginx nginx
daily
dateext
rotate 7
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
logrotate命令使用说明
示例:
/usr/sbin/logrotate -f /etc/logrotate.d/nginx
参数 | 说明 |
---|---|
-d, --debug | debug模式,测试配置文件是否有错误。 |
-f, --force | 强制转储文件。 |
-m, --mail=command | 压缩日志后,发送日志到指定邮箱。 |
-s, --state=statefile | 使用指定的状态文件。 |
-v, --verbose | 显示转储过程。 |