logrotate是在规定时间到了之后才来进行日志文件的轮替,所以logrotate程序是挂在cron下面进行的,/etc/cron.daily/logrotate记录了每天要进行的日志文件轮替行为。
logrotate的配置文件
/etc/logrotate.conf
/etc/logrotate.d/
logrotate.conf 是主要的参数文件,logrotate.d 是一个目录,该目录里面的所有数据都会被主动读入/etc/logrotate.conf 当中来进行。另外,在/etc/logrotate.d/ 里面的文件中,如果没有指定一些详细的设置,则以 /etc/logrotate.conf 的规定来指定为默认值。
看一下默认的logrotate 的内容:
#vim /etc/logrotate.conf
weekly:默认每周进行一次logrotate
rotate 4:保留四个日志文件
create:由于日志文件被重命名,因此新建一个新的来继续存储
#compress:被改动的日志文件是否需要压缩
include /etc/logrotate.d:将这个目录下所有文件都读进来执行rotate的工作
/var/log/wtmp{}:仅针对/var/log/wtmp所设置的参数
minsize:文件容量超过这个值时才进行rotate
create 0664 root utmp:指定新建文件的权限与所属账号/用户组
其实可以i将所有数据都写入logrotate.conf,但这样一来文件太复杂,因此还是放在logrotate.d下为好。
logrotate.conf的设置语法
日志文件的绝对路径文件名...{
个别参数设置值
}
下面我们以/etc/logrotate.d/syslog这个轮替的服务来看看如何设置rotate:
#vim /etc/logrotate.d/syslog
上面内容的含义如下:
文件名:路径名要写在前面,并且用绝对路径,多个文件名用空格分开;
参数:就是写在{}中的;
:可调用外部命令来进行额外的命令执行,这个设置需与sharedscripts...endscripts设置起来使用才行。至于可用环境为:
prerotate:在启动logrotate之前进行的命令,例如修改日志文件的属性等;
postrotate:在做完logrotate之后启动的命令,例如重启某个服务。
例子:我们修改上面这个文件。之前说过,加上隐藏属性 +a 之后,日志文件的轮替时进行重命名就变得不可行了,那么我们如何处理呢?就利用prerotate与postrotate来进行日志文件轮替前后所需要做的操作。
实际测试logrotate的操作
#logrotate [-vf] logfile
-v:启动显示模式,会显示logrotate运行的过程
-f:不论是否符合配置文件的数据,强制每个日志文件都进行rotate的操作