Logrotate的主要目的是方便Linux日志的管理员。这是一个很有天赋的工具
- 自动旋转
- 压缩
- 拆卸
- 邮件日志
Logrotate可以通过配置文件进行相应的配置和运行。我们将在本教程中详细介绍它们。
配置文件
Logrotate通常用作守护进程。logrotate二进制文件位于 /usr/sbin/logrotate
. 配置文件位于 /etc/logrotate.conf
. 这里是默认的logrotate配置文件内容。
# see "man logrotate" for details # rotate log files weekly weekly # use the syslog group by default, since this is the owning group # of /var/log/syslog. su root syslog # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp, or btmp -- we'll rotate them here /var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly create 0660 root utmp rotate 1 } # system-specific logs may be configured here
此文件是主配置。还有一个目录名 /etc/logrotate.d
它为多个通常不同的作业保存多个logrotate配置文件。
如果我们在logrotate.d下列出文件,我们可以看到有一些关于星号、dpkg、ufw等的配置。
$ ls /etc/logrotate.d/
设置日志文件大小
最常用的配置是设置日志何时会随着大小的增加而旋转。我们将用 size
选项和说明符。在下面的示例中,我们将设置大小5k。
/var/log/auth.log { create 700 pof pof size 1k}
我们还使用了 create
表达式,该表达式将使用用户名和组名设置存档文件权限。
启用压缩
logrotate的另一个有用特性是压缩归档文件。这将使存档文件的大小变小。压缩比可能会根据gz、bzip、zip等压缩算法而变化。 默认的压缩算法是gzip。在这个例子中,我们定义了压缩
/var/log/auth.log { compress}
将日期添加到日志文件名
在单个目录中查找大量日志文件时,根据日期查找日志文件可能非常困难。Logrotate提供了添加日志文件的日期机制 日志文件名末尾的日期。例如,如果日志文件名为 auth.log
带有日期的新文件名将被删除 auth-20170308.gz
此日期功能可以如下所示启用。
/var/log/auth.log { dateext}
指定每月/每天/每周的轮换周期
可以使用不同的度量指定轮换周期。指定为日历日期是一种方法。Logrotate可以每月、每天、每周归档日志文件。
相关文章: 如何在Docker中获取有关运行容器、图像的信息?
每月
/var/log/auth.log { monthly}
每周
/var/log/auth.log { weekly}
每天
/var/log/auth.log { daily}
旋转后运行脚本
在旋转和归档日志文件之后,我们可以为各种作业触发一些脚本。例如,我想得到关于日志轮换的电子邮件。我们可以指定脚本文件 postrotate
选项。脚本文件必须设置为可执行文件才能运行。在本例中,旋转完成后 mailme.sh
脚本将运行。
/var/log/auth.log { postrotate /usr/bin/mailme.sh}
删除旧日志文件
什么是循环日志文件档案?他们会慢慢长大的。然后他们会填满整个磁盘,服务器就会停机。如果我们不设置将存储的日志数,这是一个糟糕的场景。Logrotate有一种机制,可以删除除指定计数以外的日志文件存档。在本例中,我们只希望存储最后5个日志存档,并删除其他日志存档。我们将使用 rotate
此信息的选项。
/var/log/auth.log { rotate 5}
另一种删除旧存档的方法是设置日志存档的存储天数。当日志存档到达指定日期时,它将被删除。我们将使用 maxage
此选项。在本例中,我们希望删除超过50天的存档文件。
/var/log/auth.log { maxage 50}
指定压缩命令
在前面的示例中,我们设置了压缩。但是我们还没有定义任何算法和压缩工具。我们可以指定不同于默认值的压缩工具和相关参数。我们将使用 compresscmd
和 compressext
明确设置压缩工具和扩展。在本例中,我们希望使用bzip2进行压缩。
/var/log/auth.log { compress compresscmd /bin/bzip2 compressext .bz2}