WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

Apacheのエラーログを管理する

      2012/12/09

エラーログの取得

Apacheでは、受けたリクエストに対するレスポンスをログとして記録しています。
ログには、”いつ、どのホストから、どのファイルに対してアクセスがあったか”、や”いつ、どのようなリクエストに対してどういったエラーが発生したか”など様々な情報が記録されており、ユーザーの動向の調査やデバッグのヒントとなる重要な情報を得ることができます。

Apacheのログには大きく分けてアクセスログとエラーログの2種類があります。
エラーログは、リクエストに対して発生したエラーの詳細が記録される極めて重要なログです。

下記はエラーログの記録の一例です。

[root@centos ~]#  less /var/log/httpd/error_log
~ 省略 ~
[Sat May 02 23:22:04 2009] [error] [client ::1] client denied by server configuration: /var/www/html/secret/*

これは、許可されていないディレクトリへのアクセスが発生した際に記録されたログで、最初の項目は”日付と時刻”、2つめの項目は”報告されているエラーの重要度”です。

エラーログを記録するファイルを指定する

通常、エラーログはファイルに記録されています。
エラーログを記録するファイルは、Apacheの設定ファイル内の”ErrorLog”ディレクティブで指定されています。

[root@centos ~]#  vi /etc/http/conf/http.conf    Apacheの設定ファイルを開く
ErrorLog logs/error_log   ※ここでエラーログを記録するファイルを指定している

上記のように、ファイルへのパスが絶対パスではない場合は、ServerRoot からの相対パスとみなされます。

エラーログを記録するエラーレベルを指定する

各種エラーには重要度別にエラーレベルが定義されています。
下記の表は、エラーレベルを重要度が高いものから順に並べたものです。

レベル 意味
emerg 緊急 – システムが利用できないようなエラー
alert 直ちに対処が必要
crit 致命的な状態
error 通常のエラー
warn 警告
notice 通知
info サーバーの状態についての情報
debug デバッグメッセージ

“LogLevel”ディレクティブでは、エラーログに記録するエラーレベルを指定することができます。
例えば、下記のように指定すると、”notice”以上のエラーレベルはすべてエラーログに記録するようになり、逆に”notice”以下のエラーレベルのエラーに関してはログに記載されなくなります。

[root@centos ~]#  vi /etc/http/conf/http.conf    Apacheの設定ファイルを開く
LogLevel notice   ※ここでエラーログに記録するエラーレベルを指定

低いエラーレベルでもログに記録するように設定しておくと、より詳細な情報を得ることができます。
ただし、その反面、ログファイルが肥大化しやすくなるため、注意が必要です。

 - WEBサーバ構築 , , , , ,