1

私は CodeIgniters コア ライブラリ (Log) を拡張して、しきい値レベルを改善し、重大なエラーをメールで送信できるようにしています。しかし、何らかの理由でライブラリから構成ファイルを読み取ることができません。設定にアクセスできない場合....メール先の電子メール アドレスを取得できません。私は何を間違っていますか?私が受け取るメッセージは次のとおりです。「致命的なエラー: クラス 'CI_Controller' が見つかりません...」

これまでの私のコードは次のとおりです。

class MY_Log extends CI_Log {
/**
 * Constructor
 *
 * @access  public
 */
function MY_Log()
{
    parent::__construct();
    $this->_levels  = array('ERROR' => '1', 'INFO' => '2',  'DEBUG' => '3', 'ALL' => '4');
}

/**
 * Write Log File
 *
 * Calls the native write_log() method and then sends an email if a log message was generated.
 *
 * @access  public
 * @param   string  the error level
 * @param   string  the error message
 * @param   bool    whether the error is a native PHP error
 * @return  bool
 */
function write_log($level = 'error', $msg, $php_error = FALSE)
{
    $result = parent::write_log($level, $msg, $php_error);

    $this->ci =& get_instance();
    $this->ci->load->config('myconf/mailconf');
    echo $this->ci->config->item('emails');
}
}
4

1 に答える 1

1

Logこれは、このクラス ( / MY_Log) がアプリケーションのライフ サイクルの早い段階で読み込まれ、利用できないためだと思いget_instance()ます。

おそらく、ログ機能のビルドを拡張する代わりに、そのようなログを処理する独自のクラスを作成できます (そうする場合は、それをラップしてスパークとしてリリースできます:))

あるいは、composer パッケージを使用して、必要な機能を提供することもできます。すでに存在するものがあると確信しています。

作曲家に慣れていない場合は、Phil Sturgeon の記事を読むことをお勧めします。

于 2013-02-28T22:31:31.353 に答える