1

我看到 nginx 和 apache 在它们的日志轮换后都发送了某种形式的重新加载信号。为什么是这样?我想知道,因为我正在为我自己的应用程序设置它,并且想知道如果日志在没有更新的情况下轮换,应用程序是否会因某种原因挂起。

4

1 回答 1

0

这个问题有一个很好的答案:How to Avoid apache reload when rolling logs?

他们这样做是因为当他们打开日志文件进行写入时,他们会收到一个文件句柄。移动文件时句柄不会改变,这意味着他们会认为他们正在写入日志文件,但在移动文件后他们正在写入错误的日志文件。因此,当日志旋转时,它们会优雅地重新加载,以确保它们正在创建一个正在写入正确文件位置的新文件句柄。

如果你担心你的应用会发生什么,你应该阅读更多关于 logrotate的内容,并特别注意prerotateand postrotate。您可以让您的程序在日志文件轮换时侦听重置日志句柄的信号,或者您可以按照第一个链接的建议执行操作,只需复制文件并截断​​原始文件,这样您就不会不得不担心它。

于 2012-12-02T00:31:35.893 回答