我正在尝试使用 旋转日志文件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 文件的?该文件中可能包含错误数据或回车符。
我建议回顾一下这个答案有关如何检查文件的建议。或者至少自己重新创建该文件。如果您将内容复制并粘贴到该文件中,则可能有某些内容潜入其中。