CodeIgniter(PHP)でエラーログを行う方法


92

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

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

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

回答:


180

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

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

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



これにセキュリティ上の影響はありますか?
アーキルフェルナンデス2014

これは、ファイル名が次の形式のphpファイルにデータをダンプします:log- [Ymd H:i:s]または設定ファイルで定義されたlog_date_formatキー設定に設定されている値。機密データをログに記録したりダンプしたりしない限り、かなり安全です。このファイルはデフォルトではindex.htmlページに関連しているため、明らかに生成されたphpファイルは一般公開されません-しかし、あなたはそれを知ることは決してありません。デフォルトのapplication / logsディレクトリを変更する場合は、これらすべての予防措置を講じてください。
Vincent Edward Gedaria Binua

7
/ application / logsフォルダーを書き込み可能にします<<<これは私を助けました
user1312695

「$ config ['log_threshold'] = 1;」を設定すると、/ application / logsフォルダーにログがありませんでした。しかし、「$ config ['log_threshold'] = 3」と設定すると、ログファイルが表示されました。お役に立てれば。ありがとうございました!平和。
masarapmabuhay 2017年

25

サーバーのエラーログに行を追加するには、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('you@yourdomain.com', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

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


3

また、codeigniterが必要なメッセージのタイプを設定ファイルに記録することを許可していることを確認してください。

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


1

質問パート4に関する詳細oそのエラーをメールアドレスにどのようにメールで送信しますか?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
In config.php add or edit the following lines to this:
------------------------------------------------------
$config['log_threshold'] = 4; // (1/2/3)
$config['log_path'] = '/home/path/to/application/logs/';

Run this command in the terminal:
----------------------------------
sudo chmod -R 777 /home/path/to/application/logs/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.