同时使用mod_log_rotate和rotatelogs.exe有什么缺点?

在基于Microsoft的平台上,使用rotatelogs.exe作为ErrorLog指令并允许mod_log_rotate处理CustomLog指令进行轮转时,是否存在任何缺陷或隐藏的缺陷? 据我所知,mod_log_rotate接pipe服务器范围内的日志logging职责,那么mod_log_rotate和rotatelogs.exe如何交互? 是rotatelogs.exepipe道从mod_log_rotate数据?

以下是我在httpd.conf中的configuration

# Rotate our ErrorLogs, since mod_log_rotate doesn't seem to handle this. ErrorLog "|bin/rotatelogs.exe -l logs/error/error.%Y-%m-%d-%H_%M_%S.log 86400" [...] <IfModule log_rotate_module> # # Produce a log file with at human readable extension in a directory called 'access'. # CustomLog logs/access/access_log.%Y-%m-%d-%H%M%S combined [...] 

我不是在征求意见,特别是如果他们是无关紧要的。 我想知道这是否会从技术或安全angular度产生任何真正的问题。

rotatelogsmod_log_rotate是同一个问题的两种不同的解决scheme(旋转日志而不必发信号或重新启动Apache)。

rotatelogs (或者像cronolog这样的其他程序)通过将Apache日志传输到处理旋转的程序来解决这个问题。 这是一个很好的解决scheme,尽pipe这意味着运行另一个stream程并保持pipe道打开。

mod_log_rotate通过处理服务器进程中的旋转来解决问题。 再次,也是一个很好的解决scheme,但它只是旋转访问日志(这使得您需要为错误日志做其他事情)。

使用这两种解决scheme(一个处理访问日志,一个处理错误日志)没有任何“错误”,但为了理智和一致性,我会坚持一个解决scheme – 在您旋转日志时发送信号,或者传送pipe道一切rotatelogs


特别是在Windows上,我会build议在外部轮换你的日志,并发信号通知Apache,因为在Windows上pipe道的东西可能是错误的 (据我所知,情况自2006年以来没有多大改善)。

(实际上,我build议我不推荐在Windows上运行Apache – Apache被devise为在Unix服务器上运行,IIS被devise为在Windows服务器上运行,并且尽pipeApache人可能会声称“支持“Windows。)