nginx 的错误日志如何实现定期删除?

98 阅读2分钟

要实现Nginx错误日志的定期删除,通常可以通过使用logrotate工具来完成。logrotate是一个Linux实用程序,用于管理由系统上的各个进程生成的日志文件的大小和数量。它可以自动旋转、压缩、归档和删除旧的日志文件。以下是配置logrotate以管理Nginx日志的步骤:

  1. 安装logrotate: 如果系统中尚未安装logrotate,可以通过包管理器安装。对于基于Debian的系统,使用apt-get install logrotate;对于基于Red Hat的系统,使用yum install logrotate

  2. 配置logrotate: 创建一个新的配置文件或编辑现有的配置文件,通常位于/etc/logrotate.d/目录下。例如,你可以创建一个名为nginx的文件,并添加以下内容:

    /usr/local/nginx/logs/*.log {
        daily
        dateext
        missingok
        rotate 31
        compress
        sharedscripts
        postrotate
        [ ! -f /usr/local/nginx/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/nginx.pid`
        endscript
    }
    

    在这个配置中:

    • daily 表示每天进行日志轮换。
    • dateext 表示在日志文件名中包含日期。
    • missingok 表示如果日志文件缺失,不会报错。
    • rotate 31 表示保留31天的日志文件。
    • compress 表示压缩旧的日志文件。
    • sharedscripts 表示postrotate脚本在处理所有日志文件后只执行一次。
    • postrotate 部分包含了一个命令,用于在日志轮换后发送USR1信号给Nginx,以便它重新打开日志文件。
  3. 设置Cron任务logrotate通常由Cron定时任务每天执行。你可以检查/etc/cron.daily/logrotate来确认这一点。如果需要,可以编辑Cron任务来调整执行频率。

  4. 手动执行logrotate: 如果你想立即执行日志轮换,可以使用以下命令:

    logrotate /etc/logrotate.d/nginx
    

    这个命令会根据/etc/logrotate.d/nginx配置文件中的规则来轮换Nginx日志。