Apache log 分割處理用的 mod_log_rotate

今天是 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 !

(Visited 7,730 times, 1 visits today)

在〈Apache log 分割處理用的 mod_log_rotate〉中有 8 則留言

  1. 您好, 我使用 Apache 2.2.6, 然後用的是這個 http://www.apachelounge.com/download/mods/mod_log_rotate-1.00a-w32.zip. 結果一執行就跑出這樣的訊息, 請問我用的版本和你的一樣嗎?

    apache.exe: Syntax error on line 142 of D:/apache/conf/httpd.conf: Cannot load D:/apache/modules/mod_log_rotate.so into server: \xb5L\xaak\xb1\xd2\xb0\xca\xb3o\xad\xd3\xc0\xb3\xa5\xce\xb5{\xa6\xa1\xa1A\xa6]\xac\xb0\xc0\xb3\xa5\xce\xb5{\xa6\xa1\xaa\xba\xb3]\xa9w\xa4\xa3\xa5\xbf\xbdT\xa1C\xad\xab\xb7s\xa6w\xb8\xcb\xc0\xb3\xa5\xce\xb5{\xa6\xa1\xc0\xb3\xb8\xd3\xa5i\xa5H\xad\xd7\xb4_\xb3o\xad\xd3\xb0\xdd\xc3D\xa1C

    回覆
  2. 沒有耶, 不過我裝好了, 然後因為我用的是官方版的 apache.exe, 所以也把 httpd.exe.manifest 放到 bin. 不過結果還是失敗, 訊息如下
    (Sys) 無法啟動這個應用程式,因為應用程式的設定不正確。重新安裝應用程式應該
    可以修復這個問題。
    我 httpd.conf 就加上這一段
    LoadModule log_rotate_module modules/mod_log_rotate.so

    RotateLogs On
    RotateLogsLocalTime On
    RotateInterval 86400

    會不會是得換成 Apachelounge 的才可以呢?

    回覆
  3. 我也遇到Syntax error!

    在我自己的本本上(windowsXP)上安装apache2.2.8+mod_log_rotate.so,运行正常。但是我拿到服务器(windows2003 Server)上去,就无法启动apache,并报Syntax error,不知道该怎么继续了!

    回覆
  4. Apache 2.0跑不起來嗎? 它說了:The mods below are build with Visual Studio C++ 2005(VC8) or 2008(VC9) against the Apache 2.2 headers and loads when Apache is build with Visual Studio C++ 2005, 2008 or the download from ASF http://httpd.apache.org. It will NOT load into Apache 2.0.x releases.

    你可以自己compile 2.0 mod_log_rotate(不容易)或升級成 Apache 2.2。以前有 for 2.0 的版本,現在沒了。

    回覆

發佈留言