1.logrotate配置文件详解

linux logrotate基于crond服务(定时任务)来运行的,默认全局配置文件为:/etc/logrotate.conf。

全局配置文件解释(/etc/logrotate.conf)

[root@rhel77 log]# 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.

[root@rhel77 log]# 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   #logrotate子配置文件路径

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {      #转储日志路径
    monthly             #一个月转储一次
    create 0664 root utmp   #指定转储后创建新文件,权限为664,用户为root,属组为utmp
    minsize 1M       #指定日志轮替的最小值,也就是日志一定要达到这个最小值(1M)才会轮替,否则就算时间达到也不轮替
    rotate 1            #指定保留几个备份副本,其会覆盖定义的全局变量
}

/var/log/btmp {    #转储日志路径
    missingok       #当日志文件不存在时,忽略该日志文件的警告信息
    monthly          #一个月转储一次
    create 0600 root utmp  #指定转储后创建新文件,权限为600,用户为root,属组为utmp
    rotate 1          #指定保留几个备份副本,其会覆盖定义的全局变量
}

# system-specific logs may be also be configured here.

2.logrotate配置文件常用相关参数解释

logrotate配置文件参数解释

logrotate配置文件参数

参数

说明

hourly

每时轮替

daily

每天轮替

weekly

每周轮替

monthly

每月轮替

rotate <number>

保留的日志个数

create mode owner group

新建日志,并规定日志文件的权限、所有者、所属组

nocreate

不建立新的日志文件

copytruncate

用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据

nocopytruncate

备份日志文件,不过不截断

mail EmailAddress

当日志轮替时,输出内容通过邮件地址发送到指定的Email地址

errors EmailAddress

存储时的错误信息发送到指定的Email地址

nomail

转储时不发送日志文件

compress

压缩日志文件的所有非当前版本

delaycompress

压缩除了当前和下一个最近的所有版本

nodelaycompress

覆盖delaycompress选项,转储同时压缩

olddir "dir"

指定日志文件的旧版本放在“dir”中

noolddir

转储后的日志文件和当前日志文件放在同一个目录下

missingok

当日志文件不存在时,忽略该日志文件的警告信息

ifempty

即使日志文件为空文件也做轮转,这个是logrotate的缺省选项

notifempty

如果日志为空文件,则不进行日志轮替

minsize

日志轮替的最小值,也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替

size

日志只有达到指定大小才轮替,不按照时间轮替

dateext

使用日期作为轮替文件后缀

dateformat -%Y%m%d-%H

对日期格式进行定制;必须配合dateext使用,只支持 %Y %m %d %s 这四个参数

dateyesterday

如果定时任务时间设置的是0点执行,就要配置此项,不然切割的内容是昨天的,但是日志名却是当天的

sharedscripts

该关键字后的脚本只执行一次

prerotate/endscript

在日志轮替之前执行脚本命令

postrotate/endscript

在日志轮替之后执行脚本命令