linux

nginx日志分割:如何自动清理旧日志

小樊
43
2025-10-06 19:32:51
栏目: 编程语言

Nginx日志分割和自动清理旧日志可以通过配置logrotate工具来实现。logrotate是一个Linux系统用于管理日志文件的工具,它可以自动压缩、删除和邮件通知旧的日志文件。以下是如何配置logrotate来自动清理Nginx旧日志的步骤:

  1. 确保logrotate已安装在你的系统上。在大多数Linux发行版中,logrotate已经预装。如果没有,你可以使用包管理器(如apt、yum或zypper)来安装它。

  2. 创建一个新的logrotate配置文件,或者在已有的配置文件中添加Nginx的配置。通常,logrotate配置文件位于/etc/logrotate.d/目录下。你可以创建一个名为nginx的新文件:

    sudo touch /etc/logrotate.d/nginx
    
  3. 使用文本编辑器打开新创建的配置文件:

    sudo nano /etc/logrotate.d/nginx
    
  4. 将以下内容粘贴到配置文件中,根据需要进行调整:

    /var/log/nginx/*.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        create 0640 www-data adm
        sharedscripts
        postrotate
            if [ -f /var/run/nginx.pid ]; then
                kill -USR1 `cat /var/run/nginx.pid`
            fi
        endscript
    }
    

    这里的配置解释如下:

    • /var/log/nginx/*.log:指定要分割的日志文件路径。
    • daily:每天分割日志文件。
    • missingok:如果日志文件不存在,不会产生错误。
    • rotate 7:保留7个旧日志文件。
    • compress:压缩旧日志文件。
    • notifempty:如果日志文件为空,不进行分割。
    • create 0640 www-data adm:创建新的日志文件,设置权限和属主。
    • sharedscripts:如果有多个日志文件,只执行一次postrotate脚本。
    • postrotate:在分割日志文件后执行的脚本。这里发送USR1信号给Nginx进程,通知它重新打开日志文件。
  5. 保存并关闭配置文件。

  6. 测试logrotate配置是否正确:

    sudo logrotate -f /etc/logrotate.d/nginx
    

    如果没有错误,说明配置正确。

现在,logrotate将每天自动分割Nginx日志文件,并删除7天前的旧日志文件。你可以根据需要调整配置文件中的选项。

0
看了该问题的人还看了