Apacheのエラーログの出力場所と見方を解説

目次

スポンサードリンク

ApacheはオープンソースのWebサーバソフトウェアです。この記事ではApacheのエラーログについて、出力される場所とログファイルの見方について解説します。

エラーログとは

エラーログには、エラーの発生時刻やエラーが発生したモジュールやログレベル、プロセスID、エラーの内容などが記録されています。エラーログを確認することで、ブラウザからのリクエストを処理する際に発生したエラーの原因調査に役立てることができます。また、Apacheの起動直後にエラーログを確認することで、正常に起動したか確認することができます。

エラーログの出力場所

エラーログの出力場所は、Apacheの設定ファイルで指定することができるため、環境により様々です。デフォルトの出力先は以下なので、まずは以下を確認してみましょう。 パッケージマネージャー(dnf、yumなど)でApacheをインストールした場合は、/var/log/httpd に出力されます。

[root@hostname ~]# ll /var/log/httpd/
total 72892
-rw-r--r--  1 root root 5749965 May 10 19:29 access_log
-rw-r--r--  1 root root  524888 May 10 19:21 error_log
-rw-r--r--  1 root root 4118570 May 10 19:29 ssl_access_log
-rw-r--r--  1 root root   51250 May 10 18:28 ssl_error_log
-rw-r--r--  1 root root 5539449 Apr 18 03:13 ssl_error_log-20240418

Apacheをソースビルドでインストールした場合は、インストール先のディレクトリ内にある logs ディレクトリに出力されます。以下の例は、/usr/local/apache-2.4.51/ にApacheをインストールした場合です。

[root@hostname ~]# ll /usr/local/apache-2.4.51/logs/
合計 37800
-rw-r--r-- 1 root root        0 11月 24  2021 access_log
-rw-r--r-- 1 root root   378488  3月 19 15:58 error_log

また、Apacheの設定ファイルでは、ErrorLogディレクティブでエラーログの出力先を指定しています。デフォルトの設定では、以下のような設定になっていますが、カスタマイズされている場合は、出力先やログのファイル名が異なることがあるので、エラーログが出力されない場合は設定ファイルも確認すると良いでしょう。

ErrorLog "/usr/local/apache-2.4.51/logs/error_log"       

エラーログの内容と見方

エラーログには一般的に以下の内容が含まれています。

項目 説明
日時 エラーが発生した日時
ログレベル エラーの重要度(例:emerg, alert, crit, err, warning, notice, info, debug)
プロセスID エラーが発生したプロセスID
スレッドID エラーが発生したスレッド(マルチスレッド環境の場合)
モジュール エラーが発生したモジュール名
エラーメッセージ エラーの内容を説明するメッセージ


下記はApacheの起動直後に記録されるログの例です。mpm_prefork モジュールが notice レベルでログを記録しています。ApacheやPHPのバージョン等が出力されており、正常にApacheが起動したことが確認できます。

[Sun Aug 11 03:11:02.255000 2024] [mpm_prefork:notice] [pid 951] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/8.2.9 configured -- resuming normal operations

下記例は core モジュールが errorレベルで出力したログです。errorレベルなので、このログが出力された際のリクエストは異常終了しています。前後のログやアクセスログ、アプリケーションログなどと併せて原因調査が必要です。

[Thu Apr 25 11:52:03.207133 2024] [core:error] [pid 31274] AH00046: child process 32436 still did not exit, sending a SIGKILL

ログレベルのレベル順と出力するレベルの設定方法

エラーログにどのログレベルを記録するかは、設定ファイルで調整することができます。LogLevelディレクティブで指定したレベルと、そのレベルより高いレベルのログが全て記録されます。

レベルは以下の順になっており、左に行くほど高レベルです。

emrg > alert > crit > error > warn > notice > info > debug 

以下例では、debug レベルが指定されているので、全てのログレベルが記録されることになります。デフォルトの設定では、debugレベルのログは記録されないことが多く、エラーログを調査しても原因が特定できない時などは、debugレベルのログも出力するようにして調査することがあります。

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel debug

一般的に各ログレベルでは以下の内容がログに記録されます。

ログレベル 説明
debug デバッグ情報、詳細な処理の流れなど
info 正常な処理に関する追加情報、起動時メッセージなど
notice 特に問題はないが、注意すべき情報
warn 警告(問題が発生する可能性がある)
error エラーが発生した
crit 致命的なエラーが発生した
alert 即座に対応が必要な問題が発生した
emerg システムが停止する可能性がある緊急な問題が発生した


まとめ

エラーログについて、インストール方法毎の出力場所やログの内容、ログレベルについて解説しました。エラーログはシステムのトラブルシューティングに欠かせない情報です。ログ調査においてこの記事の内容が参考になれば幸いです。

関連:アクセスログについての記事はこちら
Apacheのエラーログの出力場所と見方を解説

関連:Apache公式ドキュメント
https://httpd.apache.org/docs/2.4/ja/mod/core.html#loglevel


Linuxの基礎からセキュリティまで、サーバー運用に必要な知識をまとめた書籍

Webシステムの基礎について徹底的に学べるUdemy講座
【PHP, MYSQL, Apache】ガチで学びたい人のためのWEB開発の基礎 icon