日志寫(xiě)入
日志寫(xiě)入
版本 | 新增功能 |
---|---|
5.0.16 | 增加文件日志自動(dòng)清理功能支持 |
5.0.13 | 增加單文件日志寫(xiě)入功能 |
5.0.10 |
增加record_trace 配置參數(shù)用于記錄trace信息到日志 |
5.0.4 | 命令行模式下日志自動(dòng)定時(shí)寫(xiě)入 |
debug 日志類(lèi)型僅用于調(diào)試模式記錄 |
手動(dòng)記錄
一般情況下,系統(tǒng)的日志記錄是自動(dòng)的,無(wú)需手動(dòng)記錄,但是某些時(shí)候也需要手動(dòng)記錄日志信息,Log類(lèi)提供了3個(gè)方法用于記錄日志。
方法 | 描述 |
---|---|
Log::record() | 記錄日志信息到內(nèi)存 |
Log::save() | 把保存在內(nèi)存中的日志信息(用指定的記錄方式)寫(xiě)入 |
Log::write() | 實(shí)時(shí)寫(xiě)入一條日志信息 |
由于系統(tǒng)在請(qǐng)求結(jié)束后會(huì)自動(dòng)調(diào)用Log::save
方法,所以通常,你只需要調(diào)用Log::record
記錄日志信息即可。
record方法用法如下:
Log::record('測(cè)試日志信息');
默認(rèn)的話(huà)記錄的日志級(jí)別是INFO,也可以指定日志級(jí)別:
Log::record('測(cè)試日志信息,這是警告級(jí)別','notice');
采用record方法記錄的日志信息不是實(shí)時(shí)保存的,如果需要實(shí)時(shí)記錄的話(huà),可以采用write方法,例如:
Log::write('測(cè)試日志信息,這是警告級(jí)別,并且實(shí)時(shí)寫(xiě)入','notice');
V5.0.4+版本開(kāi)始,為避免內(nèi)存溢出,在命令行下面執(zhí)行的話(huà) 日志信息會(huì)定時(shí)自動(dòng)寫(xiě)入。
日志級(jí)別
ThinkPHP對(duì)系統(tǒng)的日志按照級(jí)別來(lái)分類(lèi),并且這個(gè)日志級(jí)別完全可以自己定義,系統(tǒng)內(nèi)部使用的級(jí)別包括:
- log 常規(guī)日志,用于記錄日志
- error 錯(cuò)誤,一般會(huì)導(dǎo)致程序的終止
- notice 警告,程序可以運(yùn)行但是還不夠完美的錯(cuò)誤
- info 信息,程序輸出信息
- debug 調(diào)試,用于調(diào)試信息
- sql SQL語(yǔ)句,用于SQL記錄,只在數(shù)據(jù)庫(kù)的調(diào)試模式開(kāi)啟時(shí)有效
系統(tǒng)提供了不同日志級(jí)別的快速記錄方法,例如:
Log::error('錯(cuò)誤信息');
Log::info('日志信息');
// 和下面的用法等效
Log::record('錯(cuò)誤信息','error');
Log::record('日志信息','info');
還封裝了一個(gè)助手函數(shù)用于日志記錄,例如:
trace('錯(cuò)誤信息','error');
trace('日志信息','info');
也支持指定級(jí)別日志的輸入,需要配置信息:
'log' => [
'type' => 'File',
// 日志記錄級(jí)別,使用數(shù)組表示
'level' => ['error'],
],
單文件日志
在某些情況下,需要對(duì)日志記錄進(jìn)行分析和處理,那么開(kāi)啟單文件日志寫(xiě)入就會(huì)方便分析。
'log' => [
'type' => 'File',
// 日志記錄級(jí)別,使用數(shù)組表示
'single' => true,
],
開(kāi)啟后,日志文件不再區(qū)分日期文件寫(xiě)入,而是統(tǒng)一寫(xiě)入到single.log
文件中。
日志自動(dòng)清理
V5.0.16+
版本開(kāi)始,支持文件日志的自動(dòng)清理功能,你可以設(shè)置
'max_files' => 30
則日志文件最多只會(huì)保留30個(gè),超過(guò)會(huì)自動(dòng)清理較早的日志文件,避免日志文件長(zhǎng)期寫(xiě)入占滿(mǎn)磁盤(pán)空間。
開(kāi)啟自動(dòng)清理功能后,不會(huì)生成日期子目錄。