[Apache] ログを$HOSTNAME毎に出し分けする

目的

“server001”, “server002”, …, “serverN” すべてで共通の httpd.conf を使い、それぞれのログファイルを “log/server001/access_log”, …, “log/serverN/access_log” に吐くようにしたい。

ノード追加の度に手動でconfファイルをいちいち書き換えるのにはもううんざり。

そんな人には以下の方法をおすすめします。

やり方

Apacheディレクトリ内の envvars というファイルに記述することで、OSの環境変数を conf ファイルに渡すことができることを利用します。

  1. “apache2/bin/envvars” に以下の2行を追加する
HOSTNAME="$HOSTNAME"
export HOSTNAME
  1. “apache2/conf/httpd.conf” のログ出力行を編集する
#ErrorLog "logs/error_log"
ErrorLog "logs/${HOSTNAME}_error_log"

#CustomLog "logs/access_log" common
CustomLog "logs/${HOSTNAME}_access_log" common
  1. Apacheを再起動する

参考