1.在模块同级目录下新建lib/exception
2.在lib/exception目录下新建ExceptionHandler.php
<?php
namespace app\lib\exception;
use Exception;
use think\exception\Handle;
class ExceptionHandler extends Handle {
private $code;
private $msg;
private $error_code;
public function render(Exception $e)
{
if ($e instanceof BaseException) {
$this->code = $e->code;
$this->msg = $e->msg;
$this->error_code = $e->error_code;
} else {
if(config('app_debug')){
return parent::render($e);
}
$this->code = 500;
$this->msg = '服务器内部异常';
$this->error_code = 999;
}
$request = request();
$result = [
'msg' => $this->msg,
'error_code' => $this->error_code,
'request_url' => $request->url()
];
return json($result, $this->code);
Log::record($e->getMessage(),'error');
}
}
3.在lib/exception目录下新建BaseException.php
<?php
namespace app\lib\exception;
use Exception;
class BaseException extends Exception
{
public $code = 400; // HTTP 状态码 404,200...
public $msg = '参数错误'; // 错误信息具体
public $error_code = 10000; // 自定义错误码
public function __construct($params = [])
{
if (!is_array($params)) {
return; // 如果没有传入数组,那么就是使用默认的 code、msg 和 errorCode
}
if (array_key_exists('code', $params)) {
$this->code = $params['code'];
}
if (array_key_exists('msg', $params)) {
$this->msg = $params['msg'];
}
if (array_key_exists('error_code', $params)) {
$this->error_code = $params['error_code'];
}
}
}
4.修改配置文件application/config.php
并且重新指定 tp5.1 的全局异常处理类:
在 config.php 文件中的 'exception_handle’字段输入我们自定义的处理器的命名空间:
app\lib\exception\ExceptionHandler
'exception_handle' => '\app\lib\exception\ExceptionHandler', //163行
5.实现记录日志错误信息:
在config目录下,找到Log.php,开启一下配置信息:
'log' => [
// 日志记录方式,内置 file socket 支持扩展
'type' => 'File',
// 日志保存目录
'path' => LOG_PATH,
// 日志记录级别
'level' => ['error'], //175行
],
打包文件下载https://download.csdn.net/download/weixin_44432032/15892279