php錯(cuò)誤處理之錯(cuò)誤記錄日志
在一些公司里面,有專門的日志收集系統(tǒng)。日志收集系統(tǒng)會在背后默默的幫你收集錯(cuò)誤、警告、提示。
也有些公司沒有專門的日志收集系統(tǒng),通過文件來服務(wù)器當(dāng)中的運(yùn)行日志。
其中:PHP的錯(cuò)誤,警告這些是必須要收信的。
那么問題來了——不讓用戶看到,設(shè)置好錯(cuò)誤報(bào)告級別好,如何將錯(cuò)誤收集到日志系統(tǒng)中呢?
這里有需要使用到php.ini的相關(guān)配置項(xiàng)。這兩個(gè)配置項(xiàng)為:
參數(shù) | 配置項(xiàng) | 說明 |
---|---|---|
log_errors | on/off | 是否開啟日志記錄 |
log_errors_max_len | 整型,默認(rèn)1024 | 單行錯(cuò)誤最大記錄長度 |
error_log | syslog或者指定路徑 | 錯(cuò)誤日志記錄在什么地方 |
說明:
1.在表格中的log_errors和log_errors_max_len非常好理解。
2.而error_log 指定將錯(cuò)誤存在什么路徑上。配置項(xiàng)中的syslog可能有點(diǎn)不太好理解。syslog是指系統(tǒng)來記錄。windows系統(tǒng)在電腦的日志收集器里面。linux默認(rèn)在:/etc/syslog.conf
[擴(kuò)展] 了解知識點(diǎn)。若Linux系統(tǒng)啟動或修改了日志收集??赡艽鎯υ诘谌綄S玫娜罩臼占?wù)器中。
此外,PHP還為我們專門準(zhǔn)備了一個(gè)自定義的錯(cuò)誤日志函數(shù):
bool error_log ( string $錯(cuò)誤消息 [, int $錯(cuò)誤消息類型 = 0 [, string $存儲目標(biāo)]] )
這個(gè)函數(shù)可以把錯(cuò)誤信息發(fā)送到web服務(wù)器的錯(cuò)誤日志,或者到一個(gè)文件里。
常用的錯(cuò)誤消息類型:
錯(cuò)誤消息類型 | 說明 |
---|---|
0 | 發(fā)送至默認(rèn)的error_log指定位置 |
1 | 發(fā)送到指定的郵件位置 |
3 | 發(fā)送至指定的文件位置 |
示例:
<?php //無法連接到數(shù)據(jù)庫服務(wù)器,直接記錄到php.ini 中的error_log指定位置 error_log("無法連接到數(shù)據(jù)庫服務(wù)器服務(wù)器"); //可以發(fā)送郵件,但是php.ini必須配置過郵件系統(tǒng) error_log('可以用郵件報(bào)告錯(cuò)誤,讓運(yùn)維人員半夜起床干活',1 ,'pig@php.cn'); //記錄在指定的位置 error_log("我是一個(gè)錯(cuò)誤喲", 3, "d:/test/my-errors.log"); ?>
注意:
error_log 中發(fā)送郵件可能對初學(xué)者不熟,您可以不用掌握些塊知識。