2016-10-05 10 views
0

に設定されているerror_reportingの際に致命的なエラーをキャッチしていない - 私が正しく運用モード中にエラーを記録ロガーを持ってYii2はindex.phpの中で生産モードにYii2を設定する場合

defined('YII_DEBUG') or define('YII_DEBUG', false); 
defined('YII_ENV') or define('YII_ENV', 'prod') 

、適切なエラーを出力しますユーザーページにメッセージを表示するだけでなく、これらのエラーメッセージを通知に表示します(不必要にページを強制終了します)。

error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT); 

しかし、これは、彼らが記録されないように、すべてのエラーをキャッチからYii2を防ぎ、かつによって許可されたすべてのエラーが発生した場合に空白ページをレンダリング - だから、私はindex.phpの中でerror_reportingの設定しましたerror_reporting。それは、ページを殺すことから通知を防ぐが、私がerror_reporting()を使用するとロギングが機能しなくなる

これを行う適切な方法はありますか?以前誰かがこの問題を抱えていましたか?すべての試行されたソリューションに感謝します。

エラーログの設定 -

$log['targets'][] = [ 
    'class' => 'understeam\slack\LogTarget', 
    'exportInterval' => 1, 
    'levels' => ['error', 'warning'], 
    'except' => [ 
     'yii\i18n*', 
     'yii\web\HttpException:404', 
     'yii\web\HttpException:403', 
     'yii\web\ForbiddenHttpException', 
     'yii\web\NotAcceptableHttpException', 
     'yii\base\InvalidRouteException' 
    ], 
]; 

上記は、ベンダーのパッケージ "understeam/yii2-たるみ" を使用している: "〜0.3"

+1

ロガーについてもっと教えていただけますか? set_error_handler()を使用していますか?これは独自のロガーかyii2内部ロガーですか?私は似たような問題を抱えていますが、これが役立つかもしれません。http://stackoverflow.com/questions/35522669/yii2-use-error-handler-only-for-fatal-errors-or-specify-handled-error-types/35792347 – cronfy

+0

申し訳ありませんが、私はそれを含めませんでした。 私はそれを私の質問の最後に追加しました。 –

+0

さて、yii \ web \ ErrorHandlerを独自の実装に置き換えるか、独自の関数を登録するためにset_error_handler()を使用する必要があります.Yii :: warning()がログにメッセージを送信します。 – cronfy

答えて

0

をそれは私にとって興味深いケースだった、と私はsimilar problemを持っていました私は内部Yii2 ErrorHandlerを使ってこれを解決する方法がないと思います。そこで私はpackageを拡張ErrorHandlerで作成し、あなたの問題を解決できることを願っています。

それをインストールします。このような構成と

'components' => [ 
    'errorHandler' => [ 
     'class' => 'cronfy\yii\web\ErrorHandler', 
     'typesToExceptions' => YII_DEBUG ? E_ALL : false, 
     'typesToLog' => E_ALL, 
    ], 

    // ... other components 

], 

:Yiiの設定で

error_reporting(E_ALL); 

設定エラーハンドラコンポーネント:

php composer.phar require cronfy/yii2-web-errorhandler 

設定エラー報告がすべてのエラーを報告し

  1. DEBUGモードでは、すべてのエラーが記録され、例外に変換されます。
  2. PRODUCTIONモードでは、すべてのエラーもログに記録されますが、ページを破損させる例外はありません。
+0

申し訳ありません私はまだこれをテストする時間がありませんでした。私は今日または明日それを試してみるつもりです。ありがとうございました! –

関連する問題