(1)在 public文件中的index定义LOG_PATH
(2)重新编写thinkphp的handle的render(异常渲染方法),在异常处理层利用AOP思想
<?php
/**
* Created by PhpStorm.
* User: Lin
* Date: 2018/4/17
* Time: 11:34
*/
namespace app\lib\exception;
use Exception;
use think\exception\Handle;
use think\Log;
use think\Request;
class ExceptionHandler extends Handle
{
private $code;
private $msg;
private $errorCode;
//返回客户端当前请求的URL路径
public function render(Exception $e)
{
if($e instanceof BaseException){
$this->code=$e->code;
$this->msg=$e->msg;
$this->errorCode=$e->errorCode;
}else{
if(config('app_debug')){
//return default error page
return parent::render($e);
}
else{
$this->code = 500;
$this->msg ='服务器内部错误,无法告知你';
$this->errorCode = 999;
$this->recordErrorLog($e);
}
}
$request = Request::instance();
$result= [
'msg'=>$this->msg,
'errorCode'=>$this->errorCode,
'request_url'=>$request->url(),
];
return json($result,$this->code);
}
private function recordErrorLog(Exception $e){
Log::init([
'type'=>'File',
'path'=>LOG_PATH,
'level'=>['error']
]);
Log::record($e->getMessage(),'error');
}
}
其中recordErrorLog方法中设置了只保留error等级以上的错误。