PHPでログを記録する方法を初心者向けに解説!error_log関数とログファイルの使い方
生徒
「PHPでエラーやメッセージをあとから確認する方法ってありますか?表示されるだけだとすぐ見失っちゃって…」
先生
「たしかに、画面に一瞬だけ表示されるエラーは見逃しやすいですね。そんなときは、ログファイルに書き出しておくと便利ですよ。」
生徒
「ログってなんですか?難しそうに聞こえます…」
先生
「ログとは、プログラムが実行されたときの記録です。たとえば『何時にどんなエラーが起きたか』『どの処理が実行されたか』などが分かるメモみたいなものですね。PHPにはerror_logという関数があって、すごく簡単にログを記録できますよ!」
1. PHPでログを記録するとは?
ログ(log)とは、プログラムの動きやエラーの内容などを記録しておく仕組みです。PHPのエラーやメッセージを保存しておくことで、あとからトラブルの原因を調べたり、何が起きたかを確認することができます。
パソコンの世界では「記録すること」をログと呼びます。身近な例で言えば、防犯カメラの録画データのようなイメージです。
2. error_log関数の基本的な使い方
PHPでは、error_logという関数を使うだけでログにメッセージを記録できます。とても簡単です。
<?php
error_log("これはテスト用のログメッセージです。");
?>
このコードを実行すると、サーバーのエラーログファイルに「これはテスト用のログメッセージです。」と記録されます。
ログファイルは、サーバーごとに場所が異なりますが、たとえばXAMPPを使っている場合はC:\xampp\php\logs\php_error_logなどに保存されます。
3. 独自のログファイルを指定して保存する方法
ログを別のファイルに保存したい場合は、error_log関数の第2引数に3を指定し、第3引数でファイル名を指定します。
<?php
$message = "ユーザーの登録処理が完了しました。\n";
$file = "custom_log.txt";
error_log($message, 3, $file);
?>
このようにすると、カレントディレクトリ(現在のフォルダ)にcustom_log.txtというファイルが作られ、メッセージが追記されます。
ログファイルには毎回追記されるので、過去の記録が残って便利です。
4. 改行を忘れずに入れよう
ログファイルに複数のメッセージを記録するときは、\n(改行)を忘れずに入れてください。これがないとすべてのメッセージが1行に続いてしまって、読みづらくなります。
たとえば、下記のように書きます。
error_log("処理が開始されました。\n", 3, "log.txt");
error_log("処理が完了しました。\n", 3, "log.txt");
5. 実行された時間も記録したい場合
メッセージだけでなく「何時に実行されたか」も記録すると、あとで見返すときに便利です。PHPのdate関数を使えば、現在の日時を取得できます。
<?php
$now = date("Y-m-d H:i:s");
error_log("[$now] データ保存処理を実行しました。\n", 3, "log.txt");
?>
このように、日時とメッセージをセットで保存すれば、より分かりやすいログになります。
6. ログを使うと何が便利なの?
プログラムが動かないとき、画面にエラーが出ない場合でも、ログに情報を残しておくと「どこまで処理が進んだか」「どのタイミングで問題が起きたか」がわかります。
たとえば:
- ユーザー登録処理が途中で止まった
- ファイルのアップロードに失敗した
- メール送信処理がうまくいかなかった
こんなときでも、ログを見れば手がかりがつかめます。
7. ログファイルの管理にも注意しよう
ログファイルは便利ですが、長く使っているとサイズが大きくなってしまいます。定期的に古いログを削除したり、ファイルを分けて管理するとよいでしょう。
たとえば日付ごとにファイルを分けて保存する方法もあります。
<?php
$date = date("Ymd");
$fileName = "log_" . $date . ".txt";
error_log("処理実行ログ\n", 3, $fileName);
?>
これで毎日「log_20250903.txt」のように日付ごとのファイルが自動で作成されていきます。
まとめ
PHPにおけるログ記録の重要性は、アプリケーション開発や運用を進めるうえで非常に大きな意味を持ちます。この記事で学んだように、ログはただの「メモ」ではなく、実行された処理の流れやエラーの発生状況を把握するための大切な情報源です。とくに、画面上に一瞬だけ表示されて消えてしまうエラーメッセージとは違い、ログファイルに書き残すことで後から細かく見直すことができ、原因調査や改善の大きな手助けとなります。PHPが標準で提供しているerror_log関数は、ログ出力の基本として初心者でも扱いやすく、簡潔な記述で確実にログを保存できる便利な仕組みです。
さらに、ログを活用した運用には、ファイルへの保存先を柔軟に変えられる点や、独自のログファイルを作成できる点など、多くの利点があります。ディレクトリを分けたり、日付で分割したりすることで管理しやすくなり、ファイルが肥大化して読みづらくなることも防げます。また、日時を記録に含めることで、どのタイミングで何が起こったのかを正確に把握でき、複雑な処理が絡むシステム開発でも的確なトラブルシューティングが可能になります。ログはまさに「システムの足跡」といえる存在であり、開発者にとって心強い情報源であることが改めて実感できます。
PHPでは、エラーだけではなく、実行フローの確認やユーザー操作の追跡など、さまざまな用途でログを利用できます。アプリケーション内部で起こっていることを可視化し、より安定したプログラムを作り上げるためにも、積極的にログ出力の仕組みを取り入れることがおすすめです。とくに、Webアプリケーションでは外部要因による問題も多く、ログを記録しておくことで問題特定が速くなるため、開発効率や安全性の向上にもつながります。
サンプルコードで復習しよう
以下は、記事の内容を総合し、エラーログとアプリケーションログを組み合わせて使う例です。実際の開発でよく使う形式に近づけ、時間を記録しながら複数のログを扱える形にしています。
<?php
// 現在日時を取得
$now = date("Y-m-d H:i:s");
// ログ内容を整形
$infoLog = "[$now] 情報: ユーザー処理が正常に完了しました。\n";
$errorLog = "[$now] エラー: データベース接続に失敗しました。\n";
// 情報ログを書き込む独自ファイル
error_log($infoLog, 3, "app_info_log.txt");
// エラーログを書き込む独自ファイル
error_log($errorLog, 3, "app_error_log.txt");
// 日ごとにファイルを分ける例
$date = date("Ymd");
$dailyLog = "daily_log_" . $date . ".txt";
error_log("[$now] 毎日の処理が実行されました。\n", 3, $dailyLog);
?>
このように、用途ごとにログファイルを分けて記録することで、後から問題を振り返る際に探しやすく、運用の質も高まります。ログの形式を整えておくと読み返しやすくなり、他の開発者にも共有しやすい情報になります。PHPでは柔軟にログを扱えるため、アプリの規模が大きくなるほど効果が大きく感じられるようになるでしょう。
生徒
「今日の内容で、ログってただの記録じゃなくて、アプリの健康状態を知るための大事な情報なんだって分かりました!」
先生
「その通りです。とくにエラーの調査や処理の追跡には欠かせませんね。ログを見る習慣があると、問題解決のスピードも上がりますよ。」
生徒
「error_log関数がこんなに簡単に使えるのも驚きでした。独自のファイルも作れるし、時間も記録できるんですね。」
先生
「ええ、ログは工夫次第でどんどん使いやすい形にできます。日付でファイルを分ける方法なども便利なので、ぜひ活用してみてください。」
生徒
「これから作るPHPのアプリでも、ログを使って動きを確認しながら開発していきます!」