小程序全栈学习-自定义记录异常日志

鉴于上篇文章描述的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);

}

你可能感兴趣的:(小程序全栈学习-自定义记录异常日志)