自动切割日志

发布于 2024-02-10  3 次阅读


Logrotate 是一个 Linux 系统下的日志文件管理工具,它用来自动管理系统中的日志文件,防止日志文件无限增长而占用过多磁盘空间。Logrotate 的主要功能包括:

  1. 日志文件的轮转:Logrotate 可以按照预先设置的规则对日志文件进行轮转,例如按照文件大小、文件日期等进行轮转,以防止单个日志文件过大影响系统性能或磁盘空间。
  2. 日志文件的压缩:在轮转后,Logrotate 可以选择性地对旧的日志文件进行压缩,以减少磁盘占用空间。
  3. 日志文件的删除:Logrotate 可以根据用户配置的保留期限,定期删除旧的日志文件,以避免过多的历史日志文件堆积。
  4. 执行脚本:在日志轮转、压缩或删除等操作完成后,Logrotate 还可以执行用户指定的脚本,以便进行额外的操作,比如发送通知邮件或触发其他任务。

Logrotate 的配置文件通常位于 /etc/logrotate.conf/etc/logrotate.d/ 目录下,用户可以通过编辑这些配置文件来定义日志文件的轮转规则、压缩设置、保留期限等。以下是一个简单的 Logrotate 配置文件示例:
在 /etc/logrotate.d/ 目录下新建配置文件: nano /etc/logrotate.d/nginx


/var/log/nginx/mysite/*.log {
    daily
    rotate 7
    missingok
    notifempty
    create 0644 root root
    dateext
    dateformat -%Y-%m-%d
    olddir /var/log/nginx/mysite/logrotate/
    compress
    delaycompress
    sharedscripts
    postrotate
        systemctl reload nginx
    endscript
    extension .log
}

  • /var/log/nginx/mysite/*.log: 定义了要进行日志轮转的日志文件路径,通配符 * 表示匹配该目录下所有的 .log 文件。
  • daily: 指定日志文件每天轮转一次,即每天生成一个新的日志文件。
  • rotate 7: 保留历史日志文件的数量,这里设置为保留最近的 7 个历史日志文件。
  • missingok: 如果日志文件不存在,则忽略不报错。
  • notifempty: 如果日志文件为空,则不进行轮转。
  • create 0644 root root: 指定创建新日志文件的权限和所有者,这里设置为权限为 0644,所有者为 root。
  • dateext: 在旋转后的日志文件名中添加日期扩展,以区分不同日期的日志文件。
  • dateformat -%Y-%m-%d: 设置日期格式为年-月-日。
  • olddir /var/log/nginx/mysite/logrotate/: 指定旧日志文件存放的目录,将旧日志文件移动到该目录中。
  • compress: 压缩旧日志文件,使用 gzip 进行压缩。
  • delaycompress: 在进行压缩时延迟压缩上一次轮转周期生成的日志文件。
  • sharedscripts: 在日志文件轮转过程中只执行一次 postrotate 脚本,而不是每个日志文件轮转时都执行。
  • postrotate ... endscript: 在日志文件轮转后执行的命令或脚本块,这里使用 systemctl reload nginx 命令重新加载 Nginx 服务,以应用新的日志文件配置。
  • extension .log: 指定日志文件的扩展名为 .log