windows – 一起使用mod_log_rotate和rotatelogs.exe有什么缺点?

在基于Microsoft的平台上,使用rotatelogs.exe for ErrorLog指令并允许mod_log_rotate处理CustomLog指令进行轮换有任何缺点或隐藏的缺陷吗?据我了解,mod_log_rotate接管服务器范围内的日志记录职责,那么mod_log_rotate和rotatelogs.exe如何交互?来自mod_log_rotate的rotatelogs.exe管道数据是什么?

以下是我在httpd.conf中的配置:

# 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
[...]

我不是在征求意见,特别是如果它们是偏离主题的话.我想知道这是否会从技术或安全角度产生任何实际问题.

rotatelogs和mod_log_rotate是针对同一问题的两种不同解决方案(无需发信号或重启Apache即可旋转日志).

rotatelogs(或其他程序,如cronolog)通过将Apache日志传递给处理旋转的程序来解决问题.这是一个很好的解决方案,但它意味着运行另一个进程并保持管道打开.

mod_log_rotate通过处理服务器进程中的旋转来解决问题.同样,这也是一个很好的解决方案,但它只会旋转访问日志(这使得您需要为错误日志执行其他操作).

使用这两种解决方案没有“错误”(一个用于处理访问日志,一个用于处理错误日志),但为了理智和一致性,我会坚持一个解决方案 – 在旋转日志时发出Apache信号,或者管道旋转日志的一切.

特别是在Windows上,我建议在外部轮换您的日志并发信号通知Apache,因为piping stuff around on Windows can be buggy(据我所知,自2006年以来情况没有太大改善).

(实际上,我建议我不建议在Windows上运行Apache – Apache设计为在Unix服务器上运行,IIS设计为在Windows服务器上运行,尽管Apache人员可能会声称,但两者之间永远不应该交叉支持“Windows.”

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...