Logrotate:日志文件未轮换

Logrotate:日志文件未轮换

我正在尝试使用 旋转日志文件logrorate。以下是配置:

/etc/logrotate.conf:

/var/log/test.log {
        size 1M
        rotate 6
        create
        dateext
        nocompress
}

然后我使用seq命令转储一些数据 to /var/log/test.log,但文件不会自动旋转。

ls -ltrh test.log
-rw-r--r-- 1 root root 1.3M Jan 27 09:56 test.log

当我尝试使用 强制旋转它时logrotate -f test.log,输出将是:

error: test.log:37156 lines must begin with a keyword or a filename (possibly in double quotes)
error: test.log:37157 lines must begin with a keyword or a filename (possibly in double quotes)
error: test.log:37158 lines must begin with a keyword or a filename (possibly in double quotes)
error: test.log:37159 lines must begin with a keyword or a filename (possibly in double quotes)

如果需要任何更正,请提出建议。

答案1

logrotate 的参数应该是一个配置文件,因此有关 test.log 的错误是格式错误的配置文件。尝试:

logrotate -f /etc/logrotate.conf

如果这不起作用,您可以尝试使用-d选项打开调试日志记录。最后,我遇到过这样的情况:引导 logrotate 旋转日志文件的唯一方法是修改其状态文件 /var/lib/logrotate.status。该文件的格式为:

logrotate state -- version 2
"/path/to/a.log" 2015-1-26-11:0:0
"/path/to/another.log" 2015-1-26-11:0:0

其中第二列是文件上次修改的日期。您可以将日期推到更远的过去,以说服 logrotate 运行;但是,考虑到您的配置,这不是必需的,因为您使用的是基于大小的旋转。

答案2

该错误为您提供了问题的提示。您是如何创建这个 logrotate 文件的?该文件中可能包含错误数据或回车符。

我建议回顾一下这个答案有关如何检查文件的建议。或者至少自己重新创建该文件。如果您将内容复制并粘贴到该文件中,则可能有某些内容潜入其中。

相关内容