PHPのエラーログについて


PEAR::Logでエラーログを取りたいです。

require_once "Log.php";
$o_log = Log::factory("file","error.log","sample");
$o_log -> log("aaa",PEAR_LOG_NOTICE);

こんな感じでエラーログが取れるよ!と本に書いてあったのですが、これを全てのページに貼っても、誰かがページにアクセスしたときに「aaa」と書かれたログが増えるだけで、エラーログが取得できません。


いまいち使い方がわからないのですが、
「エラーが発生したときに、そのエラー文や、箇所をログファイルに記録する」事はできないのでしょうか。


Pearではなくて、PHPの標準関数でも構いませんので、どなたかよろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2008/01/08 17:55:26
  • 終了:2008/01/11 00:21:40

ベストアンサー

id:wizemperor No.2

wizemperor回答回数379ベストアンサー獲得回数522008/01/08 19:08:36

ポイント40pt

PHP自体のエラーは、自動的に記録する設定になっていることが多いと思います。

サーバのログディレクトリを確認してみてください。


ログがない場合にはphp.iniで設定を変更すれば可能です。

レンタルサーバなどで、php.iniが編集できない場合は、.htaccessに次のような感じに書いて置いておきます。


php_flag display_errors Off
php_flag log_errors On
php_value error_log "./error.log"

error_logにログファイル名を指定します。

書き込み可能なパーミッションに変更しておいてください。

これは外部からはアクセスできない場所に作成するべきです。

id:tokyosmash

回答ありがとうございます。

今の自分にはこちらの方法が適していると思いましたので、早速使わせてもらいます。

2008/01/11 00:21:06

その他の回答(1件)

id:blueberrystream No.1

KID the Euforia回答回数34ベストアンサー獲得回数52008/01/08 18:37:25

ポイント50pt

エラーが発生しそうなところで

$o_log -> log($php_errormsg, PEAR_LOG_NOTICE);

としたらいかがでしょう。

ただし、track_errorsをtrueにしている必要があります。

エラー発生箇所も記録したいのであれば、

$php_errormsg . "エラー発生箇所の名前"などにすれば

よいと思います。

エラーログは受動的に出てくるものではなく、能動的に出すものです。

本ではエラーログが取れると書いていたのでしょうが、エラーログを出すのではなく

任意のメッセージをログとして出力することができるという程度の意味です。


http://www.php.net/manual/ja/reserved.variables.php#reserved.var...

http://www.php.net/manual/ja/ref.errorfunc.php#ini.track-errors


また、log4phpでログを発生させた箇所などを自動で記録させることもできます。

http://www.doyouphp.jp/tips/tips_log4php.shtml

id:tokyosmash

回答ありがとうございます。

>エラーログは受動的に出てくるものではなく、能動的に出すものです。

大変わかりやすい説明ありがとうございます。

納得できました。

能動的に出すメリットが思いつかないのですが、恐らくあるのでしょうね。

とりあえず今の自分に必要なのはwizemperorさんの方法ですが、エラー処理等を組み込んだ時にはこちらの方法が役に立つような気もします。

ご丁寧にありがとうございました。大変勉強になりました!

2008/01/08 22:49:33
id:wizemperor No.2

wizemperor回答回数379ベストアンサー獲得回数522008/01/08 19:08:36ここでベストアンサー

ポイント40pt

PHP自体のエラーは、自動的に記録する設定になっていることが多いと思います。

サーバのログディレクトリを確認してみてください。


ログがない場合にはphp.iniで設定を変更すれば可能です。

レンタルサーバなどで、php.iniが編集できない場合は、.htaccessに次のような感じに書いて置いておきます。


php_flag display_errors Off
php_flag log_errors On
php_value error_log "./error.log"

error_logにログファイル名を指定します。

書き込み可能なパーミッションに変更しておいてください。

これは外部からはアクセスできない場所に作成するべきです。

id:tokyosmash

回答ありがとうございます。

今の自分にはこちらの方法が適していると思いましたので、早速使わせてもらいます。

2008/01/11 00:21:06
  • id:blueberrystream
    私が提示した方法はtokyosmashさんがおっしゃるとおり
    >エラー処理等を組み込んだ時
    に使う方法の紹介でした。

    >エラーログは受動的に出てくるものではなく、能動的に出すものです。
    これは、エラーログというよりデバッグログや動作ログという意味合いでのことでした。

    今回、tokyosmashさんが必要としていたのは
    PHPスクリプトを実行するときに、どこどこがおかしいですよー的な
    エラーを捕捉したいということだったんですね…。
    質問の趣旨を勘違いして回答してしまいました。申し訳ないです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません