我正在尝试在运行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个错误
答案 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'
]
];
}