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