1.首先要禁用tp默认的日志机制。
(1).在config.php中的日志配置里面
//日志设置
'log'
//日志记录方式,内置 file socket 支持扩展
'type' => 'test' //原本是file
//日志保存目录
'path' => 'LOG_PATH',
//日志级别
'level' => []
(2).tp提供Log::record()方法来记录日志
private function recordErrorLog(Exception $e){
//系统记录日志的方法 有两个参数 1,具体的异常信息 2,日志级别(tp手册上做好了分类,可以参考一下)
//先给配置信息初始化
Log::init([
'type' => "File",
'path' => LOG_PATH,
'level'=> ['error']
]);
Log::record($e->getMessage(),'error');
}
(3).在非自然抛出错误情况下,调用上面方法
public function reder(Exception $e)
{
//这里的 instanceof 和php5.0之前版本的 is_a()是一样的
if($e instanceof BaseException){
//如果是自定义的异常
$this->code = $e->code;
$this->msg = $e->msg;
$this->errorCode = $e->errorCode;
}else{
$this->code = 500;
$this->msg = '服务器内部错误';
$this->errorCode = 999;//这里的错误码需要写文档做解释
//调用刚才封装好的方法 写入日志
$this->recordErrorLog($e);
}
//tp5.0好用,5.1给废除了
$request = Request::instance();
$result = [
'msg' => $this->msg,
'error_code' => $this->errorCode,
'request_url'=> $request->url()
];
return json($result,$this->code);
}