我使用 logrotate 来轮换我的日志文件。conf 文件如下所示:
/data/log/web/12114.log {
daily
rotate 10
copytruncate
}
但是logrotate不能正确剪切日志文件。结果日志文件如下所示:
-rw-r--r-- 1 root root 0 12月 21 03:14 12114.log
-rw-r--r-- 1 root root 12806139570 12月 21 10:55 12114.log-20151217
-rw-r--r-- 1 root root 0 12月 17 03:13 12114.log-20151218
-rw-r--r-- 1 root root 0 12月 19 03:15 12114.log-20151219
-rw-r--r-- 1 root root 0 12月 20 03:28 12114.log-20151220
-rw-r--r-- 1 root root 0 12月 21 03:14 12114.log-20151221
也就是说所有的日志都被写入了12114.log-20151217
,本来应该写入的文件12114.log-20151221
没有内容。
为什么会这样?日志文件是从 写入的flask logger utils
。
提前谢谢,
答案1
Logrotate 只是移动/重命名文件,但上面的代码片段不会告诉正在运行的进程文件已被移动。您需要在 logrotate 配置中添加一个 postrotate 节,告诉进程重新打开其日志文件,关闭移动的文件并再次打开原始文件。