欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Thinkphp6的日志問題

 更新時間:2023年03月23日 16:44:04   作者:xie_rui_xiang  
這篇文章主要介紹了關(guān)于Thinkphp6的日志問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Thinkphp6的日志問題

日志級別

debug, info, notice, warning, error, critical, alert, emergency

其中有一個特別的級別:sql,專門用來記錄sql語句的

設(shè)置日志記錄級別

對于程序比較重要的業(yè)務(wù)模塊可以進(jìn)行埋點(diǎn)(進(jìn)行日志記錄)

可以通過設(shè)置日志記錄級別來開啟和關(guān)閉記錄

有助于排除錯誤(比每次出現(xiàn)錯誤去代碼里增加記錄日志好多了)

? ? ? ? # 修改 config/log.php
? ? ? ? # 配置 'level' => ['notice','warning']
? ? ? ? # level 不為空時,只記錄level中指定的錯誤級別
? ? ? ? # level 為空時,記錄所有級別
? ? ? ? $user = UserService::getInstance()->findByUsername('xieruixiang');
? ? ? ? Log::warning("warning:{user}", compact('user'));
? ? ? ? # info 不再 level 中 則不會記錄
? ? ? ? Log::info("I'm info");

單一日志

默認(rèn)的tp日志是寫在當(dāng)前日期(年月)目錄下的,如(runtime/admin/log/202204/30_info.log)

單一日志設(shè)置 修改config/log.php 中通道single屬性為true

設(shè)置單一日志后,將不再寫在時間目錄下(一直寫一個固定目錄),如(runtime/admin/log/single_info.log)

# 開啟單一日志
# channels.file.single
# 這里給file通道開啟單一日志
'single' => true

獨(dú)立日志

每一種日志級別的日志都?xì)w類到一個文件之中(推薦開啟獨(dú)立日志)

設(shè)置 config/log.php 中通道apart_level屬性

? ? ? ? # ?設(shè)置 file 通道 info,notice,warning 級別開啟獨(dú)立日志
? ? ? ? # ?channels.file.apart_level
? ? ? ? # 'apart_level' => ['info', 'notice', 'warning']
? ? ? ? # 在 apart_level中的級別會獨(dú)立寫到一個文件中去

? ? ? ? # write to runtime/admin/log/202204/30_warning.log
? ? ? ? Log::warning("I'm ");
? ? ? ? # write to runtime/admin/log/202204/30_info.log
? ? ? ? Log::info("I'm info");
? ? ? ? # write to runtime/admin/log/202204/30_notice.log
? ? ? ? Log::notice("I'm notice");

日志的寫入時機(jī)

日志寫入時機(jī)提供兩種(實時寫入,程序執(zhí)行完后寫入)

通過設(shè)置config/log.php中通道 realtime_write 屬性

? ? ? ? # 這里中斷程序的執(zhí)行
? ? ? ? # 如果 realtime_write = false 則無法寫到日志中去
? ? ? ? # realtime_write = true 可以寫入日志中去
? ? ? ? Log::warning("I'm ");

? ? ? ? # 如果 realtime_write = false
? ? ? ? # 又想實時寫入
? ? ? ? # 可以通過 Log::write($msg, $type) 實時寫入
? ? ? ? # $msg 信息
? ? ? ? # $type 日志級別
? ? ? ? Log::write("I'm write", 'warning');
? ? ? ? die("日志將不會寫入");

日志通道

可以自定義通道

以增加郵件通道為例

將config/log.php 中通道type 改成自定義驅(qū)動類即可

? ? ? ? # config/log.php channels 添加
? ? ? ? ?'email' => [
? ? ? ? ? ? 'type' => \app\admin\driver\EmailDriver::class,
? ? ? ? ? ? # 調(diào)試發(fā)送郵件時將其設(shè)置成實時比較好調(diào)試
? ? ? ? ? ? 'realtime_write' => true,
? ? ? ? ]
? ? ? ??
? ? ? ?# EmailDriver 需要實現(xiàn) think\contract\LogHandlerInterface
? ? ? ?class EmailDriver implements LogHandlerInterface
? ? ? ?{
? ? ? ? ? public function save(array $log): bool
? ? ? ? ? {
? ? ? ? ? # 這里進(jìn)行發(fā)送郵件邏輯
? ? ? ? ? # 想知道郵件發(fā)送邏輯的可以參考我的文章 《php發(fā)送郵件》
? ? ? ? ? # 不想知道的 可以調(diào)用第三方封裝好的php發(fā)送郵件組件
? ? ? ? ? ?return true;
? ? ? ? ? }
? ? ? ?}

使用郵件通道

?# channel($channelName) 指定發(fā)送通道
?# 不指定則使用默認(rèn)發(fā)送通道
?# config/log.php
?# 'default' => env('log.channel', 'file'),
?Log::channel('email')->info("this is info");
?# 就能以郵件形式通知了

Thinkphp6異常處理與日志

異常處理

目標(biāo):返回json格式的異常信息 # url_route_must:true強(qiáng)制路由模式下

thinkphp6內(nèi)置已了一個app\ExceptionHandle異常處理類可供使用

該類綁定在app目錄下面的provider.php文件中,直接修改該類的相關(guān)方法即可完成應(yīng)用的自定義異常處理機(jī)制。

在這里插入圖片描述

app\ExceptionHandle.php 異常處理類,重新定義render方法即可

#app\ExceptionHandle.php 
public function render($request, Throwable $e): Response
    {
        // app_debug模式下按原thinkphp6異常模式處理異常
        if (env('app_debug')) {
            return parent::render($request, $e);
        }
        // 自定義json返回錯誤
        if ($e instanceof ValidateException) {
            return json($e->getError(), 422);
            return json(['code' => 0, 'msg' => $e->getError()], 422);
        }

        // 自定義json返回異常
        if ($e instanceof HttpException && $request->isAjax()) {
            return json(['code' => 0, 'msg' => $e->getMessage()], $e->getStatusCode());
        }
		// 自定義json返回異常
        if ($e instanceof HttpException) {
            return json(['code' => 0, 'msg' => $e->getMessage()]);
        }
		// 自定義json返回異常
        return json(['code' => 0, 'msg' => 'Biny服務(wù)器錯誤']);
    }

目標(biāo):訪問未定義的路由時返回json格式的信息 # url_route_must:false 非強(qiáng)制路由模式下

php think make:controller Error --plain

    public function index()
    {
        return json([
            'code' => 0,
            'data' => 'Route is Not Found',
            'msg' => 'success'
        ]);
    }

    public function __call($name, $arguments)
    {
        return json([
            'code' => 0,
            'data' => 'Route is Not Found',
            'msg' => 'success'
        ]);
    }

日志

  • DEBUG模式下默認(rèn)記錄error級別和sql執(zhí)行語句日志
  • 非DEBUG模式默認(rèn)僅記錄error級別日志
  • DEBUG模式在根目錄增加.env文件 設(shè)置APP_DEBUG = false/true

在這里插入圖片描述

手動記錄日志

方法描述
record()Log::record(‘record方法記錄的日志信息不是實時保存的’,‘info’);
write()Log::write(‘要實時記錄的話,可以采用write方法’,‘info’);

系統(tǒng)在請求結(jié)束后會自動調(diào)用Log::save方法統(tǒng)一進(jìn)行日志信息寫入

關(guān)閉日志

Log::close(); //手動關(guān)閉本次請求的日志寫入

更多日志配置于app\config\log.php文件中配置,參考官方文檔配置即可

官方日志文檔

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入淺析php json 格式控制

    深入淺析php json 格式控制

    這篇文章主要介紹了深入淺析php json 格式控制的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • thinkPHP2.1自定義標(biāo)簽庫的導(dǎo)入方法詳解

    thinkPHP2.1自定義標(biāo)簽庫的導(dǎo)入方法詳解

    這篇文章主要介紹了thinkPHP2.1自定義標(biāo)簽庫的導(dǎo)入方法,詳細(xì)分析了thinkPHP標(biāo)簽庫的定義、使用及自動導(dǎo)入相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • 關(guān)于laravel 日志寫入失敗問題匯總

    關(guān)于laravel 日志寫入失敗問題匯總

    今天小編就為大家分享一篇關(guān)于laravel 日志寫入失敗問題匯總,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • 詳解yii2使用多個數(shù)據(jù)庫的案例

    詳解yii2使用多個數(shù)據(jù)庫的案例

    本篇文章主要介紹了詳解yii2使用多個數(shù)據(jù)庫的案例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • PHP Curl多線程原理實例詳解

    PHP Curl多線程原理實例詳解

    我們經(jīng)常會需要使用到Curl多線程來處理一些事情,本文介紹一下Curl多線程實例與原理
    2013-11-11
  • php fopen()函數(shù)案例詳解

    php fopen()函數(shù)案例詳解

    這篇文章主要介紹了php fopen()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • php定時執(zhí)行任務(wù)設(shè)置詳解

    php定時執(zhí)行任務(wù)設(shè)置詳解

    這篇文章主要介紹了php定時執(zhí)行任務(wù)設(shè)置的方法,非常簡單,有需要的小伙伴參考下。
    2015-02-02
  • CI框架(CodeIgniter)實現(xiàn)的數(shù)據(jù)庫增刪改查操作總結(jié)

    CI框架(CodeIgniter)實現(xiàn)的數(shù)據(jù)庫增刪改查操作總結(jié)

    這篇文章主要介紹了CI框架(CodeIgniter)實現(xiàn)的數(shù)據(jù)庫增刪改查操作,結(jié)合實例形式總結(jié)分析了CI框架針對mysql數(shù)據(jù)庫增刪改查操作的模型、控制器及視圖相關(guān)定義與使用技巧,需要的朋友可以參考下
    2018-05-05
  • PHP請求Socket接口測試實例

    PHP請求Socket接口測試實例

    下面小編就為大家?guī)硪黄狿HP請求Socket接口測試實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Yii1.0 不同頁面多個驗證碼的使用實現(xiàn)

    Yii1.0 不同頁面多個驗證碼的使用實現(xiàn)

    這篇文章主要介紹了Yii1.0 不同頁面多個驗證碼的使用實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評論