旋转日志

时间:2020-02-23 14:40:21  来源:igfitidea点击:

日志文件可以增长以消耗系统上的所有可用磁盘空间。
要避免此问题,我们可以使用Logotate命令配置日志文件的自动旋转,压缩,删除和邮寄。
每个日志文件可以每天,每周,每月或者其生长太大旋转。
LOGROTATE命令通常通过CRON作业定期运行。

可以在/etc/logrotate.conf中找到logrotate命令的配置文件:

susel:~ # cat /etc/ Logrotate. conf 
# see "man Logrotate" for details
# rotate Log files weekly
weekly
# keep 4 weeks worth of back logs 
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 fi Les compressed
#compress
# comment these to swi tch compression to use gzip or another
# compressi on scheme 
compresscmd /usr /bin/bzip2
uncompresscmd /us /bin/bunzip2
# former versions had to have the compressext set accordingly
#compressext .bz2 
# RPM packages drop Log rotation information into this di rectory
include /etc/ Logrotate.d

上面图片中的大多数线设置选项由立即在它们之前的注释解释的选项。
在上面的示例中,默认情况下,默认情况下,日志将每周旋转一次(每周),将保留四个日志副本(4),将在每次旋转(创建)上创建一个新的空文件(创建),旧版本的日志文件将具有日常扩展,如yyyymmdd(d议员),压缩将被禁用(#compress)。
Include /etc/logrotate.d指令是指将处理特定日志文件的/etc/logrotate.d目录中的文件。

最后几行演示了特定日志文件定义的格式:

# no packages own wtmp and btmp -- we' 11 rotate them here
#/var/log/wtmp {
#monthly
#create 0664 r oot utmp
#minsize 1M
# rotate 1
#}
#
# /var/log/btmp {
# missingok
# monthly
# create 0600 r oot utmp
# rotate 1
#}
# system- specific Logs may be also be configured here.

定义从文件的文件名开始(/var/log/wtmp在此示例中),然后是开放式卷曲支架({)。
遵循覆盖默认值的选项。
例如,在上图中,我们可以看到设置每月定义,这意味着此日志文件将每月旋转一次。
定义以闭合的卷曲支撑(})结束。

一些单独的包将日志旋转配置信息存储在/etc/logrotate.d目录中。
例如,这是Apache Web服务器的日志旋转配置:

susel:/etc/Logrotate.d # cat apache2
/var/log/ apache2/access_ Log {
compr ess
dateext
maxage 365 
rotate 99
si ze=+ 4096k
noti f empty
mi ssi ngok
create 644 root root 
prerotate 
/etc/ini t. d/ apache2 check re Load
endscript
postrotate
/etc/ini t. d/apache2 reload
endscript
}
/var/log/ apache2/error log {
compress
dateext
maxage 365
rotate 99
si ze=+ 1024k
noti f empty
mi ssi ngok

以下是可以包含在Logotate配置文件中的一些指令:

  • 默认情况下,GZIP压缩旧版本的日志文件。
  • 大小设置日志文件的最大大小。它的大小以字节为例(将k,m或者g添加到大小分别将其更改为千字节,兆字节或者千兆字节)。
  • dayext旋转日志文件默认获取数字,例如Access_log.1,Access_Log.2 ...。 DiyExt选项使旋转日志文件使得在Access_Log-20140930中获取日期代码,如2014年9月30日执行的旋转。
  • 每日,每周,每月按指定间隔旋转日志文件。
  • 迷失时忽略实际文件不可用时忽略错误消息。
  • Prototate,Postrotate我们可以在(预订)和之后立即运行自定义shell脚本(postrotate)日志旋转。这些关键字后的行被视为脚本。脚本以SINDICT关键字结尾。
  • 邮件我们可以在旋转存在时指定电子邮件地址以在旋转时通过电子邮件发送日志文件。

例如,要为每1KB旋转日志文件,请压缩旋转的日志文件,并使用日期命名旧日志文件,我们将在/etc/logrotate.d目录中使用以下指令创建文件:

$ cat example
/var/log/example_log {
size 1k
compress
dateext
}