<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 2019 年 7 月 28 日 發布 `6.0`的日志類比之前版本完善了很多,主要新特性包括: * 日志信息格式化 * 多通道寫入支持 * 延時/實時寫入 * 日志信息處理事件 * 日志級別指定通道寫入 * 支持關閉日志/通道 新版的日志類最大的變化就是支持多通道寫入,也就是說你可以同時或者給部分日志類型增加另外的日志通道寫入,例如對于一些異常日志可以選擇發送錯誤到郵件通知。 其它的變化主要包括: * WEB日志和CLI日志合并并統一格式; * 默認不再記錄訪問信息,需要可以自己記錄; * 獨立日志也支持JSON格式記錄; 日志的相關配置可以在`config/log.php`文件中設置,本篇主要描述下新版日志的變化。 ## 日志通道 日志通道的概念相當于給日志信息做了一個日志空間,每個日志通道的日志信息采用獨立的寫入機制或者配置參數,你可以給日志信息指定默認的日志通道,也可以動態切換通道寫入,并且支持同一個日志信息同時寫入多個日志通道。 你可以在日志配置文件的`channels`配置中定義通道,默認僅定義了一個`file`通道 ``` // 日志通道列表 'channels' => [ 'file' => [ // 日志記錄方式 'type' => 'File', // 日志保存目錄 'path' => '', // 單文件日志寫入 'single' => false, // 獨立日志級別 'apart_level' => [], // 最大日志文件數量 'max_files' => 0, // 使用JSON格式記錄 'json' => false, // 日志輸出格式化 'format' => '[%s][%s] %s', // 是否實時寫入 'realtime_write' => false, ], // 其它日志通道配置 ], ``` 每個日志通道必須指定`type`參數,該參數決定了日志的寫入方式是什么,`file`就表示文件日志方式寫入,如果需要指定其它的寫入方式需要安裝額外的擴展。但你也可以給不同的日志通道指定相同的`type`,只是其它的配置參數不同,例如寫入的路徑不同之類。 無論使用什么日志寫入類型,每個日志通道可以支持的通用配置如下: 參數|說明 ---|--- level|日志通道記錄的日志級別 realtime_write|日志是否實時寫入 `level`參數的用法和全局日志配置一致,除了在命令行模式下,默認的日志都是在請求結束后統一一次性寫入,如果需要實時寫入日志信息需要設置。 ``` 'realtime_write' => true, ``` >[danger] 如果在命令行下,無論是否設置都會自動實時寫入日志。 ### 默認通道 通過設置`default`參數定義日志的默認通道,例如: ``` 'default' => 'file', ``` ### 級別通道 可以設置不同的日志級別使用不同的日志通道 ``` 'type_channel' => [ // 對于error日志級別 同時寫入file和email兩個日志通道 'error' => ['file','email'], ] ``` >[danger] 設置了級別通道后,該級別的日志不會記錄到默認通道,請注意。 日志通道需要日志驅動的配合,你也可以自定義日志驅動。 ### 切換通道 你也可以手動切換當前的日志的默認寫入通道,例如: ``` Log::channel('email')->info('這是日志信息'); ``` 支持切換使用多個通道記錄,例如: ``` Log::channel(['email', 'file'])->info('這是日志信息'); ``` ## 日志處理 日志寫入支持事件監聽,例如。 ~~~ Event::listen('think\event\LogWrite', function($event) { if('file' == $event->channel) { $event->log['info'][] = 'test info'; } }); ~~~ 閉包的參數是`LogWrite`事件類對象實例,你可以獲取兩個屬性: 屬性名|描述 ----|---- channel |寫入日志的通道名 log |寫入的日志信息 日志信息是一個二維數組,包含了當前日志通道下(允許記錄的)所有級別的日志信息。 ## 格式化日志信息 系統提供了兩個參數用于日志信息的格式化,第一個是用于自定義時間顯示格式的`time_format`,第二個是調整日志輸出格式的`format`參數。 ``` 'channels' => [ 'file' => [ 'type' => 'file', 'json' => true 'file_size' => 1024*1024*10, 'time_format' => 'Y-m-d H:i:s', 'format' => '[%s][%s]:%s', ], ], ``` `format`參數的第一個`%s`是日志記錄時間(日志時間的格式化由`time_format`參數定義) 第二個`%s`是日志級別 第三個`%s`是日志信息,順序不能調整。 ## JSON格式日志 可以支持`JSON`格式記錄文件日志,更加方便一些第三方日志分析工具進行日志分析。 在日志配置文件中,添加 ~~~ return [ 'default' => 'file', 'channels' => [ 'file' => [ 'type' => 'file', 'json' => true 'file_size' => 1024*1024*10, ], ], ]; ~~~ 即可開啟`JSON`格式記錄,CLI命令行的日志記錄同樣有效。 >[danger] 和之前版本的區別在于,新版的每個日志信息都是一條JSON數據(舊版本是每個請求一條JSON數據)。 ## 關閉日志 你可以通過調用`close`方法動態關閉日志寫入。 ``` // 關閉全局日志寫入 Log::close(); // 關閉某個通道日志寫入 Log::close('file'); ``` 如果調用`close`方法動態關閉日志,會自動調用`clear`方法清空日志。 ## 清空日志 一旦執行`save`方法后,內存中的日志信息就會被自動清空,如果需要提前清空日志可以使用: ``` // 清空所有日志 Log::clear(); //清空通道日志可以使用 Log::clear('file'); ``` 在清空日志方法之前,你可以使用`getLog`方法獲取內存中的日志。 ~~~ // 獲取(默認通道)日志 $logs = Log::getLog(); // 獲取指定通道日志 $logs = Log::getLog('file'); ~~~ >[danger] 日志清空僅僅是清空內存中的日志。 ## 自定義驅動 日志通道需要自定義日志驅動,該日志驅動需要實現`think\contract\LogHandlerInterface`接口。 ``` interface LogHandlerInterface { /** * 日志寫入接口 * @access public * @param array $log 日志信息 * @return bool */ public function save(array $log): bool; } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看