web-dev-qa-db-ja.com

CodeIgniterでエラーログを記録する方法(PHP)

PHP CodeIgniterでエラーログを記録します。エラーログを有効にするにはどうすればよいですか?

いくつか質問があります。

  1. エラーを記録するためのすべてのステップは何ですか?
  2. エラーログファイルはどのように作成されますか?
  3. エラーメッセージをログファイルにプッシュする方法(エラーが発生するたび)
  4. そのエラーを電子メールアドレスにどのように電子メールで送信しますか?
80
udaya

CodeIgniterには、いくつかのエラーログ機能が組み込まれています。

  • / application/logsフォルダーを書き込み可能にします
  • / application/config/config.phpセット
    $config['log_threshold'] = 1;
    またはログの詳細度に応じて、より大きな数値を使用します
  • log_message('error', 'Some variable did not contain a value.');を使用
  • 電子メールを送信するには、コアCI_Exceptionsクラスメソッドlog_exceptions()を拡張する必要があります。これを自分で行うか、 this を使用できます。コアの拡張に関する詳細情報 こちら

http://www.codeigniter.com/user_guide/general/errors.html を参照してください

164
Keyo

サーバーのエラーログに単純に行を追加するには、PHPのerror_log()関数を使用します。ただし、そのメソッドは電子メールを送信しません。

まず、エラーをトリガーするには:

trigger_error("Error message here", E_USER_ERROR);

デフォルトでは、これはサーバーのエラーログファイルに記録されます。 Apacheの ErrorLogディレクティブ を参照してください。独自のログファイルを設定するには:

ini_set('error_log', 'path/to/log/file');

選択するログファイルはすでに存在し、サーバープロセスによって書き込み可能である必要があります。ファイルを書き込み可能にする最も簡単な方法は、サーバーユーザーをファイルの所有者にすることです。 (サーバーのユーザーは、OSディストリビューションに応じて、nobody、_www、Apacheなどです。)

エラーを電子メールで送信するには、カスタムエラーハンドラを設定する必要があります。

function mail_error($errno, $errstr, $errfile, $errline) {
  $message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
  error_log($message); // writes the error to the log file
  mail('[email protected]', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

詳細については、 関連PHPドキュメント を参照してください。

23
Mark Eirich

また、codeigniterが必要なメッセージのタイプを構成ファイルに記録できるようにしてください。

すなわち$config['log_threshold'] = [log_level ranges 0-4];

2
Gpak

質問パート4についての詳細は、そのエラーを電子メールアドレスにどのように送信しますかerror_log関数には電子メールの宛先もあります。 http://php.net/manual/en/function.error-log.php

アガ、ここで使用法を示す例を見つけました。 error_log()を使用して電子メールでエラーメッセージを送信

error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL);
0
Master James