我管理着运行 Apache2 和 ColdFusion 的 Windows Server 2003(标准版,32 位)安装。该服务器有 100 多个虚拟主机,每个虚拟主机都有一个访问日志和一个错误日志。我一直在寻找经典 Linux 的模拟版本(或 Win32 版本)日志旋转命令,它允许日志文件轮换而不中断 Apache 的锁定机制。
我找到的所有解决方案,包括咀嚼,名称矛盾的日志旋转bash 脚本,阿帕奇洛格以及几个 Perl 日志轮换脚本;它们都:
- 停止 Apache
- 旋转原木
- 启动 apache
显然,对于如此多的虚拟主机来说,这是不可取的,因为它每晚会停止并重新启动 Apache 数百次。
我也调查过使用旋转日志,它随 Apache 一起提供,并且纪年法,使用管道输出来创建单独的每日/每周/每月日志。这些程序不需要重新启动 apache 来轮换日志,但它们会为每个日志文件生成一个进程实例,从而导致数百个额外的守护进程运行,每个守护进程都会消耗 200-300k 的内存。
我也尝试编译经典的Linux日志旋转命令,但是没有运气。
对于我下一步应该尝试什么,你们有什么建议吗? 或者,更好的是,你们中有人设法获得经典的 Linux日志旋转在 cygwin 或者任何其他 win32 编译器上进行编译的命令?
答案1
作为一种解决方法,您可以切换到所有虚拟主机使用单个日志,并使用它们进行后处理split-logfile
或类似的东西(将它们放入每个虚拟主机的单独日志中)。这是 Apache 文档中推荐的这里。不确定这是否是您环境中的一个选项。