第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

日志的處理

1. 前言

本小節(jié)主要介紹如何處理日志,正確的處理好日志可以快速的定位問題、分析問題、解決問題。假如你在工作中突然收到用戶反饋的某種報錯信息,然后他只告訴你錯誤的現(xiàn)象,但是不能重現(xiàn)這種錯誤,這個時候需要你排查出報錯的問題,如果沒有很好的記錄錯誤日志,那么排查起這種問題將會無從下手,若是有記錄錯誤日志、訪問日志、sql 日志等等,排查問題將會變得非常容易了。

2. 開啟調(diào)試模式查看日志

若把 .env 中的 APP_DEBUG 參數(shù)設(shè)置為 true,可以開啟調(diào)試模式,當(dāng)調(diào)試模式開啟之后,系統(tǒng)會記錄大量的日志:

APP_DEBUG = false

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 49.xxx.xx.xx
DATABASE = item_name
USERNAME = xxxxxx
PASSWORD = xxxxxx
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true

[LANG]
default_lang = zh-cn

如下圖所示:
圖片描述

此時若調(diào)用之前的學(xué)生列表接口,在 runtime\log 中會產(chǎn)生日志,日志內(nèi)容如下圖:
圖片描述

Tips:從圖中可以看出日志中主要記錄了一些 sql 邏輯。

3. 主動打印日志

這里還是以前面異常處理類 ExceptionController 為例,按照如下方式可以主動輸出日志:

<?php


namespace app\controller\Study;


use app\BaseController;
use app\controller\Service\StudentService;
use think\facade\Log;

class ExceptionController extends BaseController
{
    public function testException()
    {
        try{
            $studentService = new StudentService();
            $studentService->update();
        }catch(\Exception $exception){
            Log::write('test:'.$exception->getMessage());
            return json("內(nèi)部錯誤:".$exception->getMessage());
        }
        return json("請求成功");
    }
}

Tips: 其中 Log::write('test:'.$exception->getMessage()) 表示主動記錄日志。

請求接口之后,如下圖所示展示的主動打印的日志內(nèi)容:
圖片描述

4. 配置獨立日志

若想獨立出打印的日志內(nèi)容,可在 config\log.php 配置文件中配置如下信息:
圖片描述
然后按照如下方式可以主動輸出日志:

<?php


namespace app\controller\Study;


use app\BaseController;
use app\controller\Service\StudentService;
use think\facade\Log;

class ExceptionController extends BaseController
{
    public function testException()
    {
        try{
            $studentService = new StudentService();
            $studentService->update();
        }catch(\Exception $exception){
            Log::write($exception->getMessage(),'test');
            return json("內(nèi)部錯誤:".$exception->getMessage());
        }
        return json("請求成功");
    }
}

Tips: 其中 Log::write($exception->getMessage(),'test'); 表示主動記錄日志至獨立日志文件 test 中。

請求接口之后,如下圖所示展示的主動打印的日志內(nèi)容:
圖片描述

5. 獨立記錄 sql 日志

若在 config\log.php 中配置如下內(nèi)容:
圖片描述

Tips: 其中 sql 值表示開啟 SQL 日志記錄。

配置好之后請求之前的學(xué)生列表接口,可以看到如下日志:
圖片描述

6. 獨立記錄 error 日志

若在 config\log.php 中配置如下內(nèi)容:
圖片描述

Tips: 其中 error 值表示開啟 error 日志記錄,程序發(fā)生異常時框架底層會自動記錄到 error 日志中。

這里以之前 ExceptionController 類為例,注釋掉異常捕獲代碼:

<?php


namespace app\controller\Study;


use app\BaseController;
use app\controller\Service\StudentService;
use think\facade\Log;

class ExceptionController extends BaseController
{
    public function testException()
    {
//        try{
            $studentService = new StudentService();
            $studentService->update();
//        }catch(\Exception $exception){
//            Log::write($exception->getMessage(),'test');
//            return json("內(nèi)部錯誤:".$exception->getMessage());
//        }
        return json("請求成功");
    }
}

如下圖所示:
圖片描述

請求接口之后,如下圖所示展示的主動打印的日志內(nèi)容:
圖片描述

7. 小結(jié)

本小節(jié)主要介紹了如何開啟日志記錄,日志的記錄可以很好的幫助定位問題、分析問題、解決問題,上面介紹了如何查看 sql 日志、error 日志,也可以使用 Log::write() 主動輸出日志。

Tips: 代碼倉庫:https://gitee.com/love-for-poetry/tp6