日志寫入
日志寫入
| 版本 | 新增功能 |
|---|---|
| 5.0.16 | 增加文件日志自動清理功能支持 |
| 5.0.13 | 增加單文件日志寫入功能 |
| 5.0.10 |
增加record_trace配置參數用于記錄trace信息到日志 |
| 5.0.4 | 命令行模式下日志自動定時寫入 |
debug日志類型僅用于調試模式記錄 |
手動記錄
一般情(qing)況下,系(xi)統的(de)日(ri)志(zhi)記(ji)(ji)(ji)錄是自動的(de),無需手(shou)動記(ji)(ji)(ji)錄,但是某些時候也(ye)需要手(shou)動記(ji)(ji)(ji)錄日(ri)志(zhi)信息,Log類提供了3個方法用于記(ji)(ji)(ji)錄日(ri)志(zhi)。
| 方法 | 描述 |
|---|---|
| Log::record() | 記錄日志信息到內存 |
| Log::save() | 把保存在內存中的日志信息(用指定的記錄方式)寫入 |
| Log::write() | 實時寫入一條日志信息 |
由于系統在請求結束后會自動調用Log::save方法,所以通常,你只需要調用Log::record記錄日志信息即可。
record方法用法如下:
Log::record('測試(shi)日志信息');
默認的話記(ji)錄(lu)的日志級(ji)別(bie)是INFO,也可以指定日志級(ji)別(bie):
Log::record('測試日志信息(xi),這是警(jing)告級別','notice');
采用record方法記錄(lu)的(de)日(ri)志(zhi)信息不(bu)是實(shi)(shi)時保存的(de),如果需要實(shi)(shi)時記錄(lu)的(de)話(hua),可以采用write方法,例(li)如:
Log::write('測試日志信息(xi),這是警告級別,并且實時(shi)寫入','notice');
V5.0.4+版(ban)本開(kai)始,為(wei)避(bi)免內存溢出,在命令(ling)行下(xia)面執(zhi)行的話 日志信息會定(ding)時自(zi)動寫(xie)入。
日志級別
ThinkPHP對系統(tong)的日志按照級別來分(fen)類,并且這個(ge)日志級別完全可以自己定義,系統(tong)內部使用(yong)的級別包括(kuo):
- log 常規日志,用于記錄日志
- error 錯誤,一般會導致程序的終止
- notice 警告,程序可以運行但是還不夠完美的錯誤
- info 信息,程序輸出信息
- debug 調試,用于調試信息
- sql SQL語句,用于SQL記錄,只在數據庫的調試模式開啟時有效
系統提供了(le)不同日志級別的快速記錄方(fang)法,例如(ru):
Log::error('錯誤(wu)信息');
Log::info('日(ri)志信息');
// 和下面的用法等(deng)效(xiao)
Log::record('錯誤信息(xi)','error');
Log::record('日志信息','info');
還封裝了(le)一個助手(shou)函數用于日志(zhi)記錄,例如:
trace('錯誤信息(xi)','error');
trace('日(ri)志信息','info');
也支持指定級別(bie)日志的輸(shu)入(ru),需要配置信(xin)息:
'log' => [
'type' => 'File',
// 日志記錄級別,使用數組(zu)表示
'level' => ['error'],
],
單文件日志
在某些情況下,需要(yao)對日志記錄進行(xing)分析和處理,那么開啟單文件日志寫入就(jiu)會方便分析。
'log' => [
'type' => 'File',
// 日志記錄級別,使用數組表示
'single' => true,
],
開啟后,日志文件不再區分日期文件寫入,而是統一寫入到single.log文件中。
日志自動清理
V5.0.16+版本開始,支持文件日志的自動清(qing)理功能,你可以設置
'max_files' => 30
則日(ri)志(zhi)文(wen)(wen)件(jian)(jian)最多只會(hui)保(bao)留30個,超過會(hui)自(zi)動清理較早的日(ri)志(zhi)文(wen)(wen)件(jian)(jian),避免日(ri)志(zhi)文(wen)(wen)件(jian)(jian)長期寫(xie)入占(zhan)滿磁盤空間。
開啟自動(dong)清理功能后,不會生成日期子目錄。
