Yii2-在生产中记录500个错误

时间:2019-03-06 13:00:03

标签: php logging yii2

我正在尝试在运行Yii2的生产上调试内部服务器错误。

为此,我将EmailTarget添加到配置文件中,如下所示:

if(!YII_DEBUG){
    $logTarget[] = [
        'class' => 'yii\log\EmailTarget',
        'mailer' =>'mailer',
        'levels' => ['error'],
        'message' => [
            'from' => ['mail@example.com'],
            'to' => ['mymail@example.com'],
            'subject' => 'Log',
        ],
        'categories' => [
            'yii\db\*',
            'yii\web\HttpException:*',
        ],
        'except' => [
            'yii\web\HttpException:404',
            'yii\web\HttpException:403',
            'yii\web\HttpException:401'
        ]
    ];
}

然后

    'log' => [
        'traceLevel' => 3,
        'targets' => $logTarget,
    ],

虽然我没有收到500个错误。我做错了吗?还是默认情况下未记录500个错误

1 个答案:

答案 0 :(得分:0)

所以终于让它工作了。 显然,这里的'categories'阻止了500个错误的发送,这可能是因为大多数500个错误属于yii\base\Excetion而不是yii\web\HttpException。 由于默认情况下,如果未放置'categories',则将包括所有错误,因此只需将其从数组中删除即可解决问题。

我的固定数组是:

if(!YII_DEBUG){
    $logTarget[] = [
        'class' => 'yii\log\EmailTarget',
        'mailer' =>'mailer',
        'levels' => ['error'],
        'message' => [
            'from' => ['mail@example.com'],
            'to' => ['mymail@example.com'],
            'subject' => 'Log',
        ],
        'except' => [
            'yii\web\HttpException:404',
            'yii\web\HttpException:403',
            'yii\web\HttpException:401'
        ]
    ];
}