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開発の基礎
Search
Recent Posts
- OpenSSHのエラー「bad ownership or modes for chroot directory component」の原因と解消方法
- Apacheの起動状態をチェックして停止してる場合にApacheを起動するシェルスクリプト
- Amazon LinuxのOSバージョンを調べる方法|/etc/redhat-release の代替ファイル
- MYSQLでダンプファイルを取得する際に発生したエラー「Couldn't execute 'SELECT BINLOG_GTID_POS('', '0')': You are not using binary logging (1381)」の原因と対処方法
- RHEL系Linuxでリポジトリを一覧表示するコマンド(dnf repolist)