mod_log_spread
Apache は 1.3.37 を使用。Apache2 には対応していないので、Apache2 ではパイプ経由で外部プログラムを起動します(後述)。
mod_log_spread.tar.gz をダウンロード、展開して apxs でコンパイルとインストール。
$ tar zxvf mod_log_spread.tar.gz $ cd mod_log_spread-1.0.4/ $ /usr/local/apache/bin/apxs -c \ -I/usr/local/include -L/usr/local/lib \ -lspread -ltspread mod_log_spread.c # /usr/local/apache/bin/apxs -i mod_log_spread.so
-lspread -ltspread を忘れると、コンパイルは通るのに Apache 起動時に
Cannot load /usr/local/apache/libexec/mod_log_spread.so into server: /usr/local/apache/libexec/mod_log_spread.so: undefined symbol: SP_connect
とかなるので注意。
httpd.conf の設定。
LoadModule log_spread_module libexec/mod_log_spread.so AddModule mod_log_spread.c SpreadDaemon 4803 CustomLog $apache combined
mod_log_spread-1.0.4 に含まれる spread.html には "LoadModule spread_log_module libexec/mod_log_spread.so" という記述があるが、これだとこれまた Apache 起動時に
Can't locate API module structure `spread_log_module' in file /usr/local/apache/libexec/mod_log_spread.so: /usr/local/apache/libexec/mod_log_spread.so: undefined symbol: spread_log_module LoadModule spread_log_module libexec/mod_log_spread.so
となって起動しないので、これも注意。
Apache を起動すると、"[notice] set_spread_daemon(4803) for index 0" のようなメッセージが error_log に出ます。
spreadlogd
spreadlogd.tar.gz (1.4.2)
spreadlogd.tar.gz (2.0.0)
[追記] 2007-2-7
初出時、spreadlogd.tar.gz へのリンクが version-1.4.2 のものになっていました。以下は 2.0.0 での記述です。(fc5 だと 1.4.2 は make でコケル)
make には libevent (1.1以上?) が必要です。
$ ./configure $ make # make install
/usr/local/etc/spreadlogd.conf
Spread { Port = 4803 Log { RewriteTimestamp = CommonLogFormat Group = apache File = /var/log/spread_log } }
Group には httpd.conf で CustomLog $xxx とした場合の xxx を指定。
/usr/local/sbin/spreadlogd で起動します。オプション -v で verbose mode、-D で daemon にならずに起動 (デバッグモード) です。