Apacheを設定していると、リダイレクトが効かない、画面が真っ白になる、500エラーが出る、意図しないURLに飛ぶ、といったことがあります。
そのようなときは、まずApacheのログを確認すると、原因を見つける手がかりになります。
Apacheでよく確認するログは、大きく分けると次の2つです。
| 知りたいこと | 見る設定 | 確認するログ |
|---|---|---|
| エラーの場所 | ErrorLog |
エラーログ |
| アクセスログの場所 | CustomLog |
アクセスログ |
| ログの詳しさ | LogLevel |
エラーログの出力レベル |
| ログの形式 | LogFormat |
アクセスログの出力形式 |
この記事では、Apacheのエラーログ・アクセスログの場所を確認する方法と、LogLevel、ErrorLog、CustomLog、LogFormat の基本的な設定方法を紹介します。
- Apacheのエラーログの場所を確認したい
- Apacheのアクセスログの場所を確認したい
- MAMPやXAMPPのApacheログを見たい
- LinuxサーバーのApacheログを確認したい
ErrorLogやCustomLogの意味を知りたいLogLevelやLogFormatの基本を知りたい
このような場合の参考になると思います。
結論:ApacheログはErrorLogとCustomLogを確認する
Apacheのログを確認したい場合、まず見るべき設定は ErrorLog と CustomLog です。
ErrorLog には、Apacheのエラー情報を出力するログファイルの場所を指定します。
ErrorLog "/Applications/MAMP/logs/apache_error.log"
絶対パスではなくlogs/error_logのような相対パスなら、ApacheのServerRootを基準に解決されます。
CustomLog には、アクセスログの出力先とログ形式を指定します。
CustomLog "/Applications/MAMP/logs/apache_access.log" common
つまり、Apacheのログを確認したいときは、まず設定ファイルの中で次の文字を探すのが早いです。
ErrorLogCustomLogLogLevelLogFormat
MAMPやXAMPPなどのローカル環境では、設定ファイルに最初からログの場所が書かれていることが多いです。
Apacheのエラーログの場所
Apacheのエラーログの場所は、環境によって違います。
代表的な場所は次のようになります。
| 環境 | エラーログの代表的な場所 |
|---|---|
| MAMP(Mac) | /Applications/MAMP/logs/apache_error.log |
| XAMPP(Windows) | C:\xampp\apache\logs\error.log |
| MAMP(Windows) | C:\MAMP\logs\apache_error.log |
| Ubuntu / Debian系 | /var/log/apache2/error.log |
| CentOS / RHEL系 | /var/log/httpd/error_log |
| HomebrewのApache | /opt/homebrew/var/log/httpd/error_log など |
ただし、実際のログの場所はApacheの設定によって変わります。
そのため、正確な場所を知りたい場合は、Apacheの設定ファイルで ErrorLog を確認するのが一番確実です。
ErrorLogでエラーログの場所を確認する
MAMPの場合、httpd.conf に次のような記述があります。
#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you do define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "/Applications/MAMP/logs/apache_error.log"
この場合、Apacheのエラーログは次のファイルに出力されます。
/Applications/MAMP/logs/apache_error.log
500エラーや設定ミス、モジュールの読み込みエラーなどを確認したい場合は、まずこのエラーログを見ます。
Apacheのアクセスログの場所
Apacheのアクセスログの場所も、環境によって違います。
代表的な場所は次のようになります。
| 環境 | アクセスログの代表的な場所 |
|---|---|
| MAMP(Mac) | /Applications/MAMP/logs/apache_access.log |
| XAMPP(Windows) | C:\xampp\apache\logs\access.log |
| MAMP(Windows) | C:\MAMP\logs\apache_access.log |
| Ubuntu / Debian系 | /var/log/apache2/access.log |
| CentOS / RHEL系 | /var/log/httpd/access_log |
| HomebrewのApache | /opt/homebrew/var/log/httpd/access_log など |
アクセスログでは、どのURLにアクセスがあったか、ステータスコードは何だったか、どのブラウザからアクセスされたかなどを確認できます。
CustomLogでアクセスログの場所を確認する
MAMPの場合、httpd.conf に次のような記述があります。
#
# The location and format of the access logfile.
#
CustomLog "/Applications/MAMP/logs/apache_access.log" common
この場合、アクセスログは次の場所に出力されます。
/Applications/MAMP/logs/apache_access.log
アクセスログは、リクエストの確認やステータスコードの確認に便利です。
たとえば、リダイレクト設定を変更したあとに、リクエストがどのように処理されているかを確認したい場合に使えます。
Windows / XAMPP / MAMP / Linuxでログの場所が違う
Apacheのログの場所は、インストール方法や環境によって変わります。
そのため、ネットで見つけたログパスをそのまま使っても、自分の環境では見つからないことがあります。
Apacheの設定ファイルからログの場所を探す
ログの場所がわからない場合は、Apacheの設定ファイルで次の文字を検索します。
ErrorLogCustomLog
MAMPなら、主に httpd.conf を確認します。
XAMPPでも、Apacheの設定ファイル内で ErrorLog や CustomLog を探すと、ログファイルの場所を確認できます。
Linux系のサーバーでは、Apacheの設定ファイルが複数に分かれていることがあります。
たとえば、Ubuntu系では次のような場所を確認することがあります。
/etc/apache2/apache2.conf
/etc/apache2/sites-available/
CentOSやRHEL系では、次のような場所を確認することがあります。
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/
設定ファイルの場所をコマンドで確認する
Apacheの設定ファイルの場所がわからない場合は、次のようなコマンドで確認できます。
apachectl -V
環境によっては、次のように httpd コマンドを使います。
httpd -V
出力の中に、設定ファイルの場所に関する情報が表示されます。
Linuxでは、次のように絞り込むと見やすいです。
apachectl -V | grep SERVER_CONFIG_FILE
設定ファイルの場所がわかれば、その中で ErrorLog や CustomLog を検索します。
ErrorLogの設定方法
ErrorLog は、Apacheのエラーログをどこに出力するかを指定するディレクティブです。
基本的な書き方は次のようになります。
ErrorLog "ログファイルのパス"
MAMPの場合は、次のように書かれていることがあります。
ErrorLog "/Applications/MAMP/logs/apache_error.log"
この設定により、Apacheのエラーは /Applications/MAMP/logs/apache_error.log に出力されます。
VirtualHostごとにErrorLogを分ける
複数のサイトを1つのApacheで管理している場合は、VirtualHost ごとにエラーログを分けることもできます。
<VirtualHost *:80>
ServerName example.local
DocumentRoot "/path/to/example"
ErrorLog "/path/to/logs/example_error.log"
</VirtualHost>
このようにすると、example.local に関するエラーを専用のログファイルに分けて確認できます。
複数サイトを扱う場合は、サイトごとにログを分けておくと原因を探しやすくなります。
CustomLogの設定方法
CustomLog は、Apacheのアクセスログの出力先と出力形式を指定するディレクティブです。
基本的な書き方は次のようになります。
CustomLog "ログファイルのパス" ログ形式
MAMPの場合は、次のように書かれていることがあります。
CustomLog "/Applications/MAMP/logs/apache_access.log" common
この場合、アクセスログは /Applications/MAMP/logs/apache_access.log に出力され、ログ形式には common が使われます。
combined形式でアクセスログを出力する
アクセス元ページやブラウザ情報も確認したい場合は、combined を使うことがあります。
CustomLog "/Applications/MAMP/logs/apache_access.log" combined
combined 形式では、リクエスト情報に加えて、RefererやUser-Agentなども出力されます。
アクセス解析や不具合調査をしたい場合は、common より combined の方が情報量が多くなります。
LogLevelの使い方
LogLevel は、Apacheのエラーログにどの程度詳しい情報を出力するかを指定するディレクティブです。
たとえば、MAMPの httpd.conf には次のような記述があります。
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel error
LogLevel error の場合、主にエラー以上の情報がエラーログに出力されます。
LogLevelの主な種類
LogLevel には、主に次のようなレベルがあります。
| レベル | 意味 | 出力の詳しさ |
|---|---|---|
emerg |
緊急 | かなり少ない |
alert |
直ちに対処が必要 | 少ない |
crit |
致命的な状態 | 少ない |
error |
エラー | 標準的 |
warn |
警告 | やや多い |
notice |
通常だが重要な情報 | 多い |
info |
追加情報 | 多い |
debug |
デバッグ情報 | かなり多い |
下にいくほど、より詳しいログが出力されます。
ただし、debug などにするとログの量がかなり増えるため、常に本番環境で使うのはおすすめしません。
原因調査のときだけ一時的に詳しくして、調査が終わったら元に戻すのが安全です。
LogLevelは.htaccessには書けない
LogLevel は、基本的にサーバー設定ファイルや VirtualHost で設定します。
.htaccess には書けません。
そのため、レンタルサーバーなどでサーバー設定ファイルを編集できない場合は、LogLevel を自由に変更できないことがあります。
LogFormatの基本
LogFormat は、アクセスログにどのような情報をどの形式で出力するかを決めるディレクティブです。
たとえば、MAMPの httpd.conf には次のような記述があります。
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog "/Applications/MAMP/logs/apache_access.log" common
</IfModule>
ここでは、combined と common という名前のログ形式が定義されています。
そして、CustomLog で common を指定しているため、アクセスログは common 形式で出力されます。
LogFormatの主な記号
LogFormat では、%h や %t のような記号を使って、ログに出力する内容を指定します。
| 記号 | 意味 |
|---|---|
%h |
リモートホスト |
%l |
リモートログ名。通常はハイフンになることが多い |
%u |
認証ユーザー。認証がない場合はハイフンになることが多い |
%t |
リクエストを受け付けた時刻 |
%r |
リクエストの最初の行 |
%>s |
最終的に返したHTTPステータスコード |
%b |
レスポンスサイズ |
%{Referer}i |
参照元URL |
%{User-Agent}i |
ブラウザやクローラーなどのUser-Agent |
common 形式では基本的なアクセス情報を出力します。
combined 形式では、Referer や User-Agent も含めて出力できます。
より詳しいログを確認したい場合は、Apache公式ドキュメントの mod_log_config を確認するとよいです。
Apache mod_log_config 公式ドキュメント
ログの確認方法
Apacheのログは、ファイルを直接開いて確認することもできますし、コマンドでリアルタイムに確認することもできます。
Macでログフォルダを開く
MAMPのログフォルダをFinderで開きたい場合は、ターミナルで次のように実行します。
open /Applications/MAMP/logs/
ログファイルは、基本的に上にある行が古く、下にある行が新しいログです。
最新のエラーを確認したい場合は、ログファイルの一番下を見ます。
Windowsでログフォルダを開く
WindowsのPowerShellでは、次のようにしてフォルダを開けます。
ii C:\xampp\apache\logs
MAMP for Windowsの場合は、環境に合わせて次のような場所を確認します。
ii C:\MAMP\logs
tail -Fでログをリアルタイムに確認する
MacやLinuxでは、tail -F を使うとログをリアルタイムに確認できます。-Fはログローテーションでファイルが作り直された場合にも追従しやすい指定です。
tail -n 50 -F /Applications/MAMP/logs/apache_error.log
この状態でブラウザを更新すると、新しいログが出力されたタイミングでターミナルにも表示されます。
Apacheの設定を変更したあとに、エラーが出ていないか確認するときに便利です。
Windows PowerShellでログをリアルタイムに確認する
WindowsのPowerShellでは、Get-Content を使ってログを確認できます。
Get-Content C:\xampp\apache\logs\error.log -Wait -Tail 20
-Tail 20 は、最後の20行を表示する指定です。
-Wait を付けることで、新しいログが追加されたときに続けて表示できます。
apachectl・httpdコマンドで設定を確認する
Apacheの設定ファイルやVirtualHostを調べるときは、目的に合わせてコマンドを使い分けます。
| 確認したいこと | コマンド例 |
|---|---|
| Apacheのビルド情報・ServerRoot・設定ファイル | apachectl -V |
| 読み込まれたVirtualHostとServerName | apachectl -S |
| 設定ファイルの構文 | apachectl configtest |
| 読み込まれたモジュール | apachectl -M |
環境によってはapachectlの代わりにhttpdを使います。
apachectl -V
apachectl -S
apachectl configtest
apachectl -M
VirtualHostごとに別のErrorLog / CustomLogがある場合、-Sの結果とVirtualHost設定を対応させると、見るべきファイルを絞れます。
アクセスログ1行の読み方
combined形式の例は次のようになります。
192.0.2.10 - - [12/Jul/2026:10:20:30 +0900] "GET /docs/ HTTP/1.1" 404 512 "https://example.com/" "Mozilla/5.0 ..."
| 値 | 意味 |
|---|---|
192.0.2.10 |
クライアントアドレス |
GET /docs/ HTTP/1.1 |
リクエストメソッド・パス・プロトコル |
404 |
最終ステータスコード |
512 |
レスポンス本文のバイト数 |
| URL | Refererヘッダー |
Mozilla/5.0 ... |
User-Agentヘッダー |
リダイレクト調査では301 / 302と遷移先、Not Foundでは404、サーバー・アプリケーションエラーでは500台を探します。アクセスログに500があっても原因本文は通常エラーログ側で確認します。
Apache以外のログへ出ている場合
ブラウザへ502や500が表示されても、原因が必ずApache本体のエラーログへ詳しく出るとは限りません。
- PHP-FPMを使う構成:PHP-FPMのerror logやpool設定のログ
- リバースプロキシ構成:手前にあるプロキシとバックエンド双方のログ
- Docker構成:ファイルではなくコンテナのstdout / stderr
- systemd管理:journalへ送られたサービスログ
Docker ComposeでApacheコンテナの標準出力を確認する例です。
docker compose logs -f --tail=50 web
webはComposeサービス名の例です。ApacheのErrorLogがファイル、syslog、パイプ、標準エラーのどこへ設定されているかを確認してください。
ログローテーションと安全性
アクセスがあるサーバーではログが継続的に増えます。Linuxディストリビューションのlogrotate、Apache付属のrotatelogs、運用基盤のログ収集機能などで、保持期間・圧縮・削除を管理します。
Apacheのpiped logで日ごとに分割する例です。
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /var/log/httpd/access.%Y-%m-%d.log 86400" combined
実際のrotatelogsの場所は環境によって異なります。既存のOS標準ローテーションと二重管理にならないよう、現在の設定を先に確認してください。
ログにはURL、query string、Referer、User-Agent、クライアント情報などが含まれ得ます。ログディレクトリを一般ユーザーが書き換えられる状態にせず、閲覧権限・保持期間・バックアップ対象を決めます。
ログが出ないときに確認すること
Apacheのログが出ない場合は、次の点を確認します。
ログファイルの場所が違っていないか
まず、見ているログファイルが本当にApacheの設定で指定されているファイルか確認します。
ErrorLog や CustomLog に書かれているパスと、実際に開いているログファイルが一致しているか確認してください。
VirtualHost側で別のログが指定されていないか
VirtualHost の中に ErrorLog や CustomLog が書かれている場合、サイトごとに別のログファイルへ出力されていることがあります。
<VirtualHost *:80>
ServerName example.local
ErrorLog "/path/to/logs/example_error.log"
CustomLog "/path/to/logs/example_access.log" combined
</VirtualHost>
この場合、共通のログではなく、VirtualHost で指定したログを確認します。
Apacheを再起動していない
httpd.conf などの設定ファイルを変更した場合は、Apacheの再起動が必要です。
MAMPやXAMPPの場合は、アプリの管理画面からApacheを再起動します。
Linuxの場合は、環境に応じて次のようなコマンドを使います。
sudo systemctl restart apache2
CentOSやRHEL系では、次のようなコマンドになることがあります。
sudo systemctl restart httpd
設定ファイルに文法エラーがある
Apacheの設定ファイルに文法エラーがあると、Apacheが起動できないことがあります。
設定を変更したら、次のコマンドで構文チェックをすると安心です。
apachectl configtest
環境によっては、次のように実行します。
httpd -t
Syntax OK と表示されれば、設定ファイルの文法は問題ありません。
ログファイルへの書き込み権限がない
Linuxサーバーなどでは、ログファイルやログディレクトリの権限が原因でログを書き込めないことがあります。
ログのパスを変更した場合は、Apacheを実行しているユーザーがその場所に書き込めるか確認してください。
よくある質問
Apacheのエラーログはどこにありますか?
環境によって違います。
MAMPなら /Applications/MAMP/logs/apache_error.log、XAMPPなら C:\xampp\apache\logs\error.log、Ubuntu系なら /var/log/apache2/error.log が代表的です。
ただし、正確な場所はApacheの設定ファイルにある ErrorLog を確認するのが確実です。
Apacheのアクセスログはどこにありますか?
アクセスログの場所は CustomLog で指定されています。
MAMPなら /Applications/MAMP/logs/apache_access.log、XAMPPなら C:\xampp\apache\logs\access.log、Ubuntu系なら /var/log/apache2/access.log が代表的です。
ErrorLogとCustomLogの違いは何ですか?
ErrorLog はエラーログの出力先を指定します。
CustomLog はアクセスログの出力先と出力形式を指定します。
エラー原因を知りたい場合は ErrorLog、アクセス状況やステータスコードを確認したい場合は CustomLog を見ます。
LogLevelは何に設定すればよいですか?
通常は warn や error がよく使われます。
詳しい調査をしたいときは、一時的に info や debug にすることもあります。
ただし、debug はログの量が増えやすいため、本番環境で常に使うのは避けた方がよいです。
.htaccessにLogLevelやErrorLogは書けますか?
基本的に LogLevel、ErrorLog、CustomLog、LogFormat は、サーバー設定ファイルや VirtualHost で設定します。
通常の .htaccess には書けません。
レンタルサーバーなどでサーバー設定ファイルを編集できない場合は、管理画面や提供されているログ機能を確認します。
まとめ
Apacheのログを確認したい場合は、まず ErrorLog と CustomLog を確認します。
| 確認したいこと | 見る設定 |
|---|---|
| エラーログの場所 | ErrorLog |
| アクセスログの場所 | CustomLog |
| エラーログの詳しさ | LogLevel |
| アクセスログの形式 | LogFormat |
ログの場所は環境によって違います。
そのため、ログファイルが見つからない場合は、Apacheの設定ファイルで ErrorLog や CustomLog を検索するのが確実です。
ログをリアルタイムで確認したい場合は、MacやLinuxでは tail -f、Windows PowerShellでは Get-Content -Wait -Tail を使うと便利です。