Apache log 分割处理用的 mod_log_rotate
Apache log 分割处理用的 mod_log_rotate
在windows 下的apache,因为使用 cronolog 作 Apache log 的分割處理,它是使用外部的
工具去分割,然后系统进程里面会有很多的cronolog.exe 而且他们不会停止。这是一个BUG
。所以我们
用mod_log_rotate.so模块来代替
到http://www.apachelounge.com/download/ 下载模块
也许你的主机还需要下载按vcredist_x86.exe
按照下载过来的包里面的readme说明去www.microsoft.com/downloads/details.aspx?
familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en下载
vcredist_x86.exe并安装,如果没有安装这个,下面的httpd.exe.manifest它将没法编译。
并将httpd.exe.manifest拷贝到你apache的bin目录下。
但是在有些windows xp下面可以不用拷贝这个文件apache照样能起来,但是win2003却不行。
一定要安装vcredist_x86.exe 才能不然会报 load这个模块错误
用法很简单:
将 mod_log_rotate.so 放到 Apache 的 module 目录,如 Apache2\modules.
在 httpd.conf 中加上
LoadModule log_rotate_module modules/mod_log_rotate.so
RotateLogs On (打開 log)
RotateLogsLocalTime On (用 local time 算,default 是用 UTC 时间)
RotateInterval 86400 (86400 是 default,也就是一天,這一行不加也可以)
原本用 cronolog 的地方
CustomLog “|c:/bin/cronolog.exe logs/access_%Y%m%d.log” combined
改成
CustomLog logs/access_%Y%m%d.log combined
注意,这个模块不能自己创建文件,
如果你的logs文件里面没有test11这个文件,那么写如下配置apache将会报错。且启动失败
CustomLog logs/test11/access_%Y%m%d.log combined
只能用自己手动增加这样一个test11目录才能启动且写入日志。
日志轮询二:
利用apache自带的rotatelogs工具,具体设置就是把httpd.conf中的:CustomLog logs/access.log common替换为CustomLog "|bin/rotatelogs.exe -l logs/access%Y-%m-%d.log 86400" combined,
同样 如果你觉得error日志不断增大而不利于访问的时候,也可以使用下面的配置进行error日志的轮询
ErrorLog "|bin/rotatelogs.exe -l /logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"