<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 日志處理 日志記錄和寫入由`\think\Log`類完成,通常我們使用`think\facade\Log`類進行靜態調用。 由于日志記錄了所有的運行錯誤,因此養成經常查看日志文件的習慣,可以避免和及早發現很多的錯誤隱患。 > 5\.1的日志遵循`PSR-3`規范 - [日志配置](#_8) - [日志寫入](#_55) - [手動記錄](#_57) - [日志級別](#_93) - [上下文信息](#_127) - [獨立日志](#_137) - [單文件日志](#_151) - [寫入授權](#_172) - [清空日志](#_194) - [日志自動清理(`V5.1.6+`)](#V516_213) - [JSON格式日志(`V5.1.15+`)](#JSONV5115_229) ## 日志配置 日志的配置文件是配置文件目錄下的`log.php`文件,如果需要針對不同的模塊設置不同的日志類型,則需要在模塊配置目錄下的`log.php`中配置,系統在進行日志寫入之前會讀取該配置文件進行初始化。 日志配置參數根據不同的日志類型有所區別,內置的日志類型包括:`file`、`socket`和`test`(僅用于測試,不會實際記錄任何日志),日志類型使用`type`參數配置即可。 日志的全局配置參數包含(無論使用什么日志類型都支持): 參數描述type日志類型(或者驅動類名稱)level允許記錄的日志級別allow\_key允許日志寫入的授權keyclose是否關閉日志寫入(`V5.1.8+`)> 默認的日志類型是`File`方式,可以通過驅動的方式來擴展支持更多的記錄方式。 文件類型日志的話,還支持下列配置參數: 參數描述path日志存儲路徑file\_size日志文件大小限制(超出會生成多個文件)apart\_level獨立記錄的日志級別time\_format時間記錄格式single是否單一文件日志max\_files最大日志文件數(超過自動清理 `V5.1.6+`)> 為了避免同一個目錄下面的日志文件過多的性能問題,日志文件會自動生成日期子目錄。 下面是一個`log.php`配置示例: ``` return [ // 日志記錄方式,支持 file socket 或者自定義驅動類 'type' => 'File', //日志保存目錄 'path' => '../logs/', //單個日志文件的大小限制,超過后會自動記錄到第二個文件 'file_size' =>2097152, //日志的時間格式,默認是` c ` 'time_format' =>'c' ], ``` > 系統并未提供關閉日志的方法,但有兩種方式可以關閉日志的寫入,第一種方式是設置日志類型為test,即不寫入任何日志。第二種方式是設置日志記錄級別,只記錄需要的日志。 ## 日志寫入 ### 手動記錄 一般情況下,系統的日志記錄是自動的,無需手動記錄,但是某些時候也需要手動記錄日志信息,Log類提供了3個方法用于記錄日志。 方法描述record()記錄日志信息到內存save()把保存在內存中的日志信息(用指定的記錄方式)寫入,并清空內存中的日志write()實時寫入一條日志信息,會觸發save操作由于系統在請求結束后會自動調用`Log::save`方法,所以通常,你只需要調用`Log::record`記錄日志信息即可。 record方法用法如下: ``` Log::record('測試日志信息'); ``` 默認記錄的日志級別是`info`,也可以指定日志級別: ``` Log::record('測試日志信息,這是警告級別','notice'); ``` 采用`record`方法記錄的日志信息不是實時保存的,如果需要實時記錄的話,可以采用`write`方法,例如: ``` Log::write('測試日志信息,這是警告級別,并且實時寫入','notice'); ``` > write方法同時也會把內存中的日志信息寫入到文件。 > 為避免內存溢出,在命令行下面執行的話日志信息會實時寫入。 `V5.1.6+`版本開始,可以使用`close`方法臨時關閉當前請求的日志寫入。 ### 日志級別 ThinkPHP對系統的日志按照級別來分類記錄,按照`PSR-3`日志規范,日志的級別從低到高依次為: `debug`, `info`, `notice`, `warning`, `error`, `critical`, `alert`, `emergency`,ThinkPHP額外增加了一個`sql`日志級別僅用于記錄`SQL`日志(并且僅當開啟數據庫調試模式有效)。 > 系統發生異常后記錄的日志級別是`error` 系統提供了不同日志級別的快速記錄方法,例如: ``` Log::error('錯誤信息'); Log::info('日志信息'); // 和下面的用法等效 Log::record('錯誤信息','error'); Log::record('日志信息','info'); ``` 還封裝了一個助手函數用于日志記錄,例如: ``` trace('錯誤信息','error'); trace('日志信息','info'); ``` 也支持指定級別日志的輸入,需要配置信息: ``` return [ 'type' => 'File', // 日志記錄級別,使用數組表示 'level' => ['error','alert'], ], ``` 上面的配置表示只記錄`error`和`alert`級別的日志信息。 > 默認情況下是不會記錄HTTP異常日志(避免受一些攻擊的影響寫入大量日志),除非你接管了系統的異常處理,重寫了report方法。 ### 上下文信息 日志可以傳入上下文信息(數組),并且被替換到日志內容中,例如: ``` Log::info('日志信息{user}', ['user'=>'流年']); ``` 實際寫入日志的時候,`{user}`會被替換為流年。 ### 獨立日志 為了便于分析,`File`類型的日志還支持設置某些級別的日志信息單獨文件記錄,例如: ``` return [ 'type' => 'file', // error和sql日志單獨記錄 'apart_level' => ['error','sql'], ], ``` 設置后,就會單獨生成`error` 和 `sql`兩個類型的日志文件,主日志文件中將不再包含這兩個級別的日志信息。 ### 單文件日志 默認情況下,日志是按照日期為目錄,按天為文件生成的,但如果希望僅生成單個文件(方便其它的工具或者服務讀取以及分析日志)。 ``` return [ 'single' => true, 'file_size' => 1024*1024*10, ]; ``` 開啟生成單個文件后,`file_size`和`apart_level`參數依然有效,超過文件大小限制后,系統會自動生成備份日志文件。 默認的單文件日志名是`single.log`,如果需要更改日志文件名,可以設置 ``` return [ 'single' => 'single_file', 'file_size' => 1024*1024*10, ]; ``` 那么實際生成的日志文件名是 `single_file.log`,如果設置了`apart_level`的話,可能還會生成 `single_file.error.log`之類的日志。 ### 寫入授權 日志支持寫入授權,我們可以設置某個請求的日志授權Key,然后設置允許授權寫入的配置`Key`,實現個別用戶日志記錄的功能,從而提高高負載下的日志記錄性能。 首先需要在應用配置文件或者應用公共文件中添加當前訪問的授權Key定義,例如: ``` // 設置IP為授權Key Log::key(Request::ip()); ``` 然后在日志配置參數中增加`allow_key`參數,如下: ``` return [ // 日志類型為File 'type' => 'File', // 授權只有202.12.36.89 才能記錄日志 'allow_key' => ['202.12.36.89'], ] ``` ### 清空日志 一旦執行save或者write方法后,內存中的日志信息就會被自動清空,如果需要手動清空可以使用: ``` Log::clear(); ``` 在清空日志或者調用`save/write`方法之前,你可以使用getLog方法獲取內存中的日志。 ``` // 獲取錯誤類型日志 $error = Log::getLog('error'); // 獲取全部日志 $logs = Log::getLog(); ``` > 日志清空僅僅是清空內存中的日志。 ### 日志自動清理(`V5.1.6+`) 從`V5.1.6+`版本開始,文件類型的日志支持自動清理。可以設置`max_files`參數,超過數量的最早日志將會自動刪除。 例如,下面設置日志最多保存數量為30個 ``` return [ 'type' => 'File', 'max_files' => 30, ]; ``` > 設置`max_files`參數后,日志文件將不會分日期子目錄存放。 ### JSON格式日志(`V5.1.15+`) 從`V5.1.15+`版本開始,可以支持`JSON`格式記錄文件日志,更加方便一些第三方日志分析工具進行日志分析。 在日志配置文件中,添加 ``` 'json' => true ``` 即可開啟`JSON`格式記錄,CLI命令行的日志記錄同樣有效。 使用JSON格式記錄后,每次請求是一行JSON數據,但如果使用`Log::write`記錄的日志是例外的單獨一行JSON數據。 > JSON格式記錄日志的時候,獨立記錄日志級別參數`apart_level`無效。
                  <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>

                              哎呀哎呀视频在线观看