Yii2 框架错误处理和记录
errorHandler 指定处理控制器和方法
原配置
config/web.php
中默认设置如下:
errorHandler => [
"errorAction" => "site/error"
]
在SiteControllers.php
中对应site/error
的方法如下
public function Actions(){
return [
"error"=>[
"class"=>"yii/web/ErrorAction"
],
]
}
修改优化
修改 config/web.php
如下
errorHandler => [
"errorAction" => "site/error"
]
另外新建 ErrorController.php
代码如下:
public function actionError(){
$error = Yii::$app->errorHandler->exception;
if($error){
//记录错误信息到文件和数据库内
$file = $error->getFile();
$line = $error->getLine();
$message = $error->getMessage();
$code = $error->getCode();
//把错误信息写入文件内,Yii已经封装好一个类Target
$log = new Target();
//把文件放入runtime里面的logs文件夹内
$log->logFile = Yii::$app->getRuntimePath()."logs/err.log";
//设置错误信息放置格式
$err_msg = $message. " [file:{$file}][line:{$line}][code:{$code}][url:{$_SERVER['REQUEST_URI']}][POST_DATE:".http_build_query($_POST)."]";
//写入错误信息
$log->messages[] = [
$err_msg,
1,
'application',
microtime(true)
]
$log->export(); #执行
}
//页面展示错误信息
return “错误页面</br>错误信息: ”.$err_msg.
}