鉴于上篇文章描述的TP5自带的默认记录异常日志的种种缺陷,在项目开发过程中一帮要进行自定义的异常日志记录设置。
自定义异常日志记录一般要完成以下几个步骤:1、关闭TP5自带的记录日志的机制;2、设置自定义的记录异常日志的文件夹路径;3、编写异常日志记录代码。
1、关闭TP5自带的记录日志的机制
在application文件夹下面的config类中,将'type' => 'File'中的File改成Test就关闭的TP5自带的记录日志的机制;
2、设置自定义的记录日志的文件夹路径
在TP5核心框架中thinkphp文件夹下面的base.php文件中的代码:
defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH . 'log' . DS);表示如果定义了日志记录文件夹路径就采用定义的路径,如果没有定义就用RUNTIME_PATH路径。
所以一般情况下,在项目中采用定义路径的方式,如何定义路径呢?
在Public文件夹下面的入口文件index.php进行定义,定义的方法如下:
define('LOG_PATH', __DIR__ . '/../log/');//将异常日志文件的路径定义在根目录下的log文件夹中。
3、编写异常日志记录代码
(1)、在全局异常处理层中编写记录异常日志函数
private function recordErrorLog(Exception $e){ //函数及抛出来的异常为参数
Log::init([ //初始化异常日志记录
'type'=>'File', //将异常日志以文件形式记录
'path'=>LOG_PATH, //存放日志记录文件的路径
'level'=>['error'] //记录异常日志的层级 优先级高于record函数的第二个参数
]);
Log::record($e->getMessage(),'error'); //自带的记录日志的函数
}
(2)、在非自定义异常处理的分支代码里引用函数recordErrorLog
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);
}
网友评论