Joe*_*Joe 5 windows logging logrotate apache-2.2
我管理运行 Apache2 和 ColdFusion 的 Windows Server 2003(标准版,32 位)安装。该服务器有 100 多个虚拟主机,每个主机都有一个访问日志和一个错误日志。我一直在寻找经典 Linux logrotate命令的模拟(或 win32 端口),它允许日志文件轮换而不中断 Apache 的锁定机制。
我找到的每个解决方案,包括chomp、名称冲突的logrotate bash 脚本、apachelogrot和几个 Perl 日志轮换脚本;他们都:
显然,对于如此多的虚拟主机,这是不可取的,因为它每晚会停止和重新启动 Apache 数百次。
我还使用了 apache 附带的rotatelogs和cronolog 进行了调查,它们使用管道输出来创建单独的每日/每周/每月日志。这些程序不需要重新启动 apache 来轮转日志,但它们会为每个日志文件生成一个进程实例,从而导致运行数百个额外的守护进程,每个进程消耗 200-300k 的内存。
我还尝试在 cygwin 上编译经典的 Linux logrotate命令,但没有成功。
你们对我接下来应该尝试什么有什么建议吗? 或者,更好的是,你们中有人设法让经典的 Linux logrotate命令在 cygwin 或任何其他 win32 编译器上进行编译吗?
小智 2
作为解决方法,您可以切换为所有虚拟主机使用单个日志,并使用split-logfile
或类似的方法对它们进行后处理(将它们放入每个虚拟主机的单独日志中)。这是 Apache 文档中推荐的。不确定它是否适合您的环境。