logrotate是linux系统中用来简化系统日志管理的工具,在系统运行过程中会产生大量日志,可以使用该工具来对日志进行管理。logrotate能够自动对日志文件进行轮询、压缩、移除和发送邮件,所有的操作可以在固定的时间间隔如每天、每周、每月执行,也可以在日志文件增长超过一定大小后执行。
默认情况下,logrotate是以daily cron的方式运行的,因此一天内只能够执行一次操作,除非log的修改是基于文件大小并且logrotate能够在一天内执行多次,或者使用-f参数进行强制执行。
一、参数
logrotate支持如下参数:
-f:强制执行轮询,即使是不必要的,一般在配置文件修改的时候需要执行一次。
二、配置文件
logrotate配置文件在/etc/logrotate.conf和/etc/logrotate.d目录中。/etc/logrotate.d目录中的所有文件都会被读取到/etc/logrotate.conf文件中。
logrotate是被cron.daily每天执行的
logrotate.conf文件内容如下
其中写入的参数和支持的参数:
weekly:设置为每周执行一次rotate轮转
rotate:保留多少个轮转文件
create:当进行轮转的时候,自动创建一个新的文件,新文件和原始文件具有相同的权限,用于对后续日志的记录
dateext:以时间作为轮转文件的后缀
compress:以gzip压缩文件的方式存储轮转文件
上述是默认的配置,在/etc/logrotate.d/目录中的其他配置文件可以添加各自的配置项,一般常用的配置项还有:
daily:设置为每天执行一次rotate轮转
monthly:设置为每月执行一次rotate轮转
nocompress:轮转的日志文件不进行压缩
prerotate:在进行轮转之前需要执行的操作,可以在后面一行写shell命令
postrotate:在进行轮转之后需要执行的操作,可以在后面一行写shell命令
dateformat:用于指定后缀格式,需要配合dateext使用,只支持%Y %m %d %s
size:用于控制日志文件大小,不管轮转周期是否到了,只要logrotate被触发执行了,并且日志文件大小大于size,就会触发轮转,并且只有当文件大于size大小的时候才会进行轮转。设置了size之后滚动周期参数将会无效
maxsize:用于控制日志文件大小,不管轮转周期是否到了,只要logrotate被触发执行了,并且日志文件大小大于maxsize,就会触发轮转,如果滚动周期到了,但是文件大小没有大于maxsize,还是会触发一次轮转。
minsize:用于控制日志文件大小,不管轮转周期是否到了,只要logrotate被触发执行了,并且日志文件大小大于minsize,那么就会触发轮转,但是在这个轮转周期内只会触发一次,在当前轮转周期剩余的时间里即使日志文件大于了minsize,也不会再次触发轮转了,这与maxsize不同,maxsize是在一个轮转周期内如果继续大于maxsize则还会进行轮转。如果一个周期内日志文件大小没有大于minsize,则不会发生轮转。
logrotate的状态信息通常保存在/var/lib/logrotate/logrotate.status文件中。这个文件记录了logrotate对各个日志文件执行轮转的详细信息,包括轮转的时间、是否压缩、是否轮转以及轮转的次数等。