logrotate 将内容保存到旧文件

logrotate 将内容保存到旧文件

我使用 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 节,告诉进程重新打开其日志文件,关闭移动的文件并再次打开原始文件。

相关内容