nginx logrotate不清洁日志



我有nginx logrotate

的配置
/var/log/nginx/*.log {
        daily
        missingok
        rotate 3
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then 
                        run-parts /etc/logrotate.d/httpd-prerotate; 
                fi 
        endscript
        postrotate
                invoke-rc.d nginx rotate >/dev/null 2>&1
        endscript
}

理想情况下,它应该在GZ中压缩文件,然后在3天后删除之前的文件,但这是我的日志文件

-rw-r--r-- 1 www-data www-data 1.4G Dec 10 00:00 2016-12-09-access.log.1
-rw-r----- 1 www-data adm         0 Dec 11 06:33 2016-12-10-access.log
-rw-r--r-- 1 www-data www-data 1.5G Dec 11 00:00 2016-12-10-access.log.1
-rw-r----- 1 www-data adm         0 Dec 12 06:30 2016-12-11-access.log
-rw-r--r-- 1 www-data www-data 1.6G Dec 12 00:00 2016-12-11-access.log.1
-rw-r----- 1 www-data adm         0 Dec 13 06:46 2016-12-12-access.log
-rw-r--r-- 1 www-data www-data 1.4G Dec 13 00:00 2016-12-12-access.log.1
-rw-r----- 1 www-data adm         0 Dec 14 06:25 2016-12-13-access.log
-rw-r--r-- 1 www-data www-data 1.4G Dec 14 00:00 2016-12-13-access.log.1
-rw-r----- 1 www-data adm         0 Dec 15 06:50 2016-12-14-access.log
-rw-r--r-- 1 www-data www-data 1.5G Dec 15 00:00 2016-12-14-access.log.1
-rw-r--r-- 1 www-data www-data 362M Dec 15 07:59 2016-12-15-access.log
-rw-r----- 1 www-data adm         0 Dec 15 06:50 ---access.log
-rw-r----- 1 www-data adm       254 Dec 15 04:53 ---access.log.1
-rw-r----- 1 www-data adm       202 Oct 25 03:58 ---access.log.10.gz
-rw-r----- 1 www-data adm       578 Oct 24 02:30 ---access.log.11.gz
-rw-r----- 1 www-data adm      1.3K Oct 23 06:11 ---access.log.12.gz
-rw-r----- 1 www-data adm       980 Oct 22 05:39 ---access.log.13.gz
-rw-r----- 1 www-data adm       648 Oct 21 05:59 ---access.log.14.gz
-rw-r----- 1 www-data adm      1006 Oct 20 05:45 ---access.log.15.gz
-rw-r----- 1 www-data adm       150 Dec 13 23:03 ---access.log.2.gz
-rw-r----- 1 www-data adm        89 Dec 13 05:46 ---access.log.3.gz
-rw-r----- 1 www-data adm       421 Dec 12 06:23 ---access.log.4.gz
-rw-r----- 1 www-data adm       277 Nov  8 17:16 ---access.log.5.gz
-rw-r----- 1 www-data adm       174 Nov  7 05:52 ---access.log.6.gz
-rw-r----- 1 www-data adm       104 Nov  5 18:42 ---access.log.7.gz
-rw-r----- 1 www-data adm       111 Nov  4 23:43 ---access.log.8.gz
-rw-r----- 1 www-data adm       220 Oct 25 19:36 ---access.log.9.gz

和logrotate状态为

"/var/log/nginx/2016-12-01-access.log" 2016-12-2
"/var/log/nginx/2016-11-21-access.log" 2016-11-22
"/var/log/nginx/2016-09-16-access.log" 2016-9-17
"/var/log/mail.err" 2016-2-10
"/var/log/nginx/2016-10-06-access.log" 2016-10-7
"/var/log/nginx/2016-09-14-access.log" 2016-9-15
"/var/log/nginx/2016-11-02-access.log" 2016-11-3
"/var/log/nginx/2016-10-04-access.log" 2016-10-5
"/var/log/nginx/2016-10-22-access.log" 2016-10-23
"/var/log/nginx/2016-09-30-access.log" 2016-10-1
"/var/log/landscape/package-reporter.log" 2016-12-15
"/var/log/nginx/2016-10-20-access.log" 2016-10-21

哪几天没有提供太多信息。我如何调试配置?

您可以使用-df参数调试特定脚本:

logrotate -df /etc/logrotate.d/nginx

并立即执行(如果需要):

logrotate -f /etc/logrotate.d/nginx

请注意,适用于所有logrotate脚本的/etc/logrotate.conf文件中通常有设置,因此可能有必要与您的特定脚本一起运行它:

logrotate /etc/logrotate.conf /etc/logrotate.d/nginx

但是,此配置文件通常在logrotate.d文件夹下调用所有脚本,因此您可能需要暂时评论此行,或创建此文件的副本以进行测试,该文件不包括目录调用:

#include /etc/logrotate.d

还阅读有关 delayCompress 配置选项:

将上一个日志文件推迟到下一个旋转循环。仅当与压缩组合使用时,这只有效果。它当无法告诉某些程序关闭其日志文件时,可以使用因此,可能会继续写入上一个日志文件一段时间。

最新更新