在index.php -
中将Yii2设置为生产模式时defined('YII_DEBUG') or define('YII_DEBUG', false);
defined('YII_ENV') or define('YII_ENV', 'prod')
我有一个记录器,可以在生产模式下正确记录错误,并在用户页面上打印出相应的错误消息,但也会在通知上显示这些错误消息(不必要地删除页面)。 所以,我在index.php中设置了error_reporting -
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT);
但是这会阻止Yii2捕获错误,因此它们不会被记录,并且在error_reporting允许的任何错误的情况下呈现空白页面。它可以防止通知终止页面,但是当我使用error_reporting()
时,记录退出工作有没有Yii2这样做的合适方式?以前有人有这个问题吗?感谢所有尝试过的解决方案。
错误日志配置 -
$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-slack”:“~0.3”
答案 0 :(得分:0)
对我来说这是一个有趣的案例,我有similar problem,我认为没有办法用内部Yii2 ErrorHandler来解决这个问题。所以我决定用扩展的ErrorHandler创建一个package,希望能解决你的问题。
安装它:
php composer.phar require cronfy/yii2-web-errorhandler
设置错误报告以报告所有错误:
error_reporting(E_ALL);
在yii config中配置错误处理程序组件:
'components' => [
'errorHandler' => [
'class' => 'cronfy\yii\web\ErrorHandler',
'typesToExceptions' => YII_DEBUG ? E_ALL : false,
'typesToLog' => E_ALL,
],
// ... other components
],
使用此配置: