今天是 2006 最後一天,新年快樂!

以前提過使用 cronolog 作 Apache log 的分割處理,它是使用外部的程式去分割,但是今天在測試 Apache 2.2.3 的時候發現問題,可能是 Apache 的 bug,Apache 會發動愈來愈多的 cronolog.exe … 而且停 Apache 並不會停這些 process,這裡有討論.

在網上研究了一下,有人提供了 Apache 模組去達成同樣的功能 — mod_log_rotate,可以供 Apache 1.3 及 2.x 使用,它提供 c 的原始程式,另有網站提供了 Apache 2.0 及 2.2 在 Windows 平台編譯好的 module.

用法很簡單:

  1. 將 mod_log_rotate.so 放到 Apache 的 module 目錄,如 Apache2\modules.
  2. 在 httpd.conf 中加上
    LoadModule log_rotate_module modules/mod_log_rotate.so
    RotateLogs On (打開 log)
    RotateLogsLocalTime On (用 local time 算,default 是用 UTC 時間)
    RotateInterval 86400 (86400 是 default,也就是一天,這一行不加也可以)
  3. 原本用 cronolog 的地方
    CustomLog “|c:/bin/cronolog.exe logs/access_%Y%m%d.log” combined
    改成
    CustomLog logs/access_%Y%m%d.log combined

Ok !