logrotate配置文件
Logrotate 是一个方便的工具,适用于希望将 /var/log
目录置于其控制之下的系统管理员。logrotate
命令每天由 cron 调度程序调用,它读取以下文件:
- logrotate 配置文件
/etc/logrotate.conf
- logrotate 配置目录下的文件
/etc/logrotate.d
安装在系统上的大多数服务(Apache webserver、postgreSQL、MySql、KDE 桌面管理器等)都会在 /etc/logrotate.d
中创建 logrotate 的配置文件。
logrotate 配置文件示例
假设我们正在运行一个名为“linuxserver”的服务,它在/var/log/linuxserver
目录中创建名为“linux.log”的日志文件。
要在日志轮换中包含“linuxserver”日志文件,我们需要先创建一个 logrotate 配置文件,然后将其复制到 /etc/logrotate.d
目录中。
logrotate 配置文件看起来像这样:
/var/log/linuxserver/linux.log { rotate 7 daily compress delaycompress missingok notifempty create 660 linuxuser linuxuser }
该配置文件将每天运行,最多创建 7 个 linuxuser 和 linuxuser 组拥有的具有 660 权限的存档,压缩所有日志并仅排除昨天和空日志文件。
以下是一些选定的 logrotate 配置关键字。
如需完整教程,请查看“logrotate”手册页。
daily | 日志文件每天都轮换。 |
weekly | 如果当前的平日少于最后一个轮换的工作日,则会轮换日志文件,或者自上次轮换以来已超过一周。这通常是与一周的第一天的轮换日志相同,但如果每天每天都没有运行LogOrate,则在第一个有效机会上会发生日志轮换。 |
monthly | Log文件轮换第一次Logrotate在一个月内运行(这通常在月的第一天)。 |
notifempty | 如果它是空的,请勿轮换日志(这覆盖IFEMPTY选项)。 |
nocompress | 未压缩日志文件的旧版本。 |
delaycompress | 将前一个日志文件的压缩推迟到下一个轮换周期。当与压缩结合使用时,这仅具有效果。当某些程序无法告知要关闭其日志文件时,可以使用它,因此可能继续写入前一个日志文件一段时间。 |
compress | 默认情况下,GZIP压缩了日志文件的旧版本。 |
mail address | 当日志轮换不存在时,它将邮寄到地址。如果特定日志不应生成邮件,则可以使用辅导指令。 |
missingok | 如果缺少日志文件,请在不发出错误消息的情况下继续到下一个。 |
在 Linux 中,许多应用程序和系统服务都会存储日志文件。
这些日志文件使 Linux 管理员可以深入了解其系统的运行情况,并且在解决问题时无效。
但是,日志文件很快就会变得笨拙。
例如,如果 Web 服务器软件记录对我们网站的每次访问,并且我们每天有成千上万的访问者,那么将有太多信息可能无法挤入一个文本文件中。
这就是“logrotate”命令发挥作用的地方。
Logrotate 将定期获取当前日志文件,重命名它们,可选地压缩它们,并生成一个新文件,应用程序可以继续将其日志发送到该文件。logrotate
命令从 cron 自动调用,大多数服务都有自己的日志轮换配置,在安装时实现。
这个配置告诉 logrotate 它应该如何处理旧的日志文件。
例如,在删除之前应该保留多少个文件,应该压缩文件等。
系统管理员也可以根据自己的需要使用 logrotate 实用程序。
例如,如果 Linux 管理员设置了要运行的脚本,并让该脚本定期生成日志,则可以设置 logrotate 来为我们管理日志文件。
在本教程中,我们将学习:
- logotate 配置文件的存储位置
- 如何设置自定义 logotate 配置
- 如何测试 logrotate 实现
实现 logotate 配置文件
一旦配置文件准备就绪,只需将其复制到 logrotate 目录并更改所有者和权限:
# cp linuxserver /etc/logrotate.d/ # chmod 644 /etc/logrotate.d/linuxserver # chown root.root /etc/logrotate.d/linuxserver
最后,我们可以通过在没有要轮换的任何日志文件的情况下强制执行日志文件来试验日志轮换(在通常的 cron 作业之外)。
# logrotate -f /etc/logrotate.d/linuxserver