几天前,我们发布了一个指南,描述了如何设置 集中式 Rsyslog 服务器 在 CentOS 系统上。 今天,在本指南中,我们将了解如何使用 对数旋转 在 Linux 上。 此实用程序简化了日志文件的管理,特别适用于每天产生大量日志文件的系统。 顾名思义,LogRotate 会定期将日志完全轮换出您的系统。 它还允许日志文件的自动轮换、压缩、删除和邮寄。 每个日志文件可以每天、每周、每月或当它变得太大时处理。
使用 Logrotate 管理日志文件
安装 Logrotate
Logrotate 在大多数 Linux 发行版的默认存储库中可用。
在 Arch Linux 及其衍生产品上,您需要运行以下命令来安装它。
$ sudo pacman -S logrotate
在基于 RPM 的系统上,例如 RHEL、CentOS、Scientific Linux,您可以使用以下命令安装它:
$ sudo yum install logrotate
在 Debian、Ubuntu 上:
$ sudo apt-get install logrotate
在 SUSE 上,openSUSE:
$ sudo znf install logrotate
下载 – 免费电子指南:“让 Ubuntu 感觉像家一样的 22 个有用的调整”
配置 Logrotate
LogRotate的主要配置文件是 /etc/logrotate.conf.
这是我的 Arch 系统中这个文件的默认内容。 此文件输出在其他 Linux 发行版上可能看起来有些不同。
$ cat /etc/logrotate.conf
样本输出:
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # restrict maximum size of log files #size 20M # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # Logs are moved into directory for rotation # olddir /var/log/archive # Ignore pacman saved files tabooext + .pacorig .pacnew .pacsave # Arch packages drop log rotation information into this directory include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
让我们看看上面配置文件中每个选项的作用。
- 每周 – 它每周轮换日志。
- 旋转 4 – 默认情况下,LogRotate 保留四个星期(显然是一个月)的日志文件。 由于它会在特定时间段后轮换所有日志文件,因此如果您不想丢失重要日志文件,则可能需要保留它们的备份。
- 大小 20M – 如果日志文件达到 20MB 的大小,则轮换它们。 默认情况下,此选项被禁用。 要启用它,只需取消注释即可。
- 创造 – 在轮换旧日志文件后创建新的日志文件。 默认情况下启用此选项。
- 压缩 – 压缩日志文件。 此外,它默认不压缩日志。 如果要压缩日志,请取消注释此行。
- /etc/logrotate.d/ – 此目录包含特定于应用程序的日志规则文件。
- 没关系 – 如果日志文件丢失,Logrotate 将继续下一个而不发出错误消息。
Logrotate 对日志文件进行分段,并根据以下指定的规则压缩日志 /etc/logrotate.d/ 目录。
让我们看一下这个目录的内容。
$ ls /etc/logrotate.d/
示例输出为:
lirc samba
正如您在上面的输出中看到的,它包含由 LogRotate 管理的所有日志的各种规则文件。 要查看特定的应用程序日志规则,对于 example 桑巴,运行:
$ cat /etc/logrotate.d/samba
样本输出:
/var/log/samba/log.smbd /var/log/samba/log.nmbd /var/log/samba/*.log { notifempty missingok sharedscripts copytruncate postrotate /bin/kill -HUP `cat /var/run/samba/*.pid 2>/dev/null` 2>/dev/null || true endscript }
这里,
- 通知空 – 表示如果日志文件为空,则不会轮换日志文件。
- 复制截断 – 创建副本后将原始日志文件截断到位。
- postrotate/endscript – postrotate 和 endscript 之间的行在日志文件旋转后执行。
- 共享脚本 – 脚本只运行一次,无论有多少日志匹配通配符模式。
您还可以在 /etc/logrotate.d/ 目录中创建自己的日志规则文件并定义自己的规则。
Cron 每天运行 logroate 实用程序来搜索要轮换的日志文件。 您可以在中指定自动日志轮换规则 /etc/cron.daily/logrotate 文件以避免手动用户干预。 它将每天在特定时间执行日志轮换。
要验证日志文件是否正在轮换,请运行:
$ cat /var/lib/logrotate.status
样本输出:
logrotate state -- version 2 "/var/log/samba/log.smbd" 2016-5-12-11:0:0 "/var/log/lircd" 2016-6-15-10:0:0 "/var/log/httpd/*log" 2016-5-12-11:0:0 "/var/log/wtmp" 2016-5-6-10:0:0 "/var/log/samba/*.log" 2016-5-12-11:0:0 "/var/log/btmp" 2017-4-1-11:36:53 "/var/log/samba/log.nmbd" 2016-5-12-11:0:0
有关更多详细信息,请输入以下命令运行 logrotate:
$ logrotate --help
或者,
$ man logrotate
这就是现在的一切。 Logrotate 是一个简单但有用的日志轮换工具,可简化日志管理。 您无需为复杂的配置和安装步骤而苦恼。 一切都是不言自明的。 如果您正在管理一个产生大量日志文件的系统,您可以使用 Logrotate 定期轮换它们。
干杯!
资源:
感谢您的光临!
帮助我们帮助您:
- 订阅我们的电子邮件通讯: 立即注册
- 支持 OSTechNix: 通过贝宝捐款
- 下载免费的电子书和视频: TradePub 上的 OSTechNix
- 联系我们: Facebook | Twitter | 谷歌加 | 领英 | RSS订阅
祝你有美好的一天!!