使用PHP的開發者經常面臨一個問題,就是如何來訪問、查錯應用程序報錯的信息。正常情況下,當PHP程序啟動后,會將處理過程中的任何錯誤信息直接輸出到屏幕上。這樣的做法顯然是不可取的,因為提交給用戶前必須對錯誤信息進行處理。
Logstash是一個通用的日志采集處理工具,它可以輕松地搜集來自多個源的數據,并將其記錄到一個目標位置。此處針對PHP程序的錯誤,在程序中產生錯誤后可以通過配置將錯誤輸出到Logstash中進行處理。
那么,如何設置php.ini文件呢?大家可以找到如下部分。
;;;;;;;;;;;;;;;;;
; Error handling ;
;;;;;;;;;;;;;;;;;
; 是否顯示每個錯誤報告(默認是關閉的)
; http://php.net/display-errors
display_errors = Off
; 錯誤日志記錄粒度(官方建議:E_ALL)
; http://php.net/error-reporting
error_reporting = E_ALL
在此基礎上,我們需要配置Logstash的input部分,來搜集PHP報錯的信息。下面是一個配置示例:
input {
udp {
port =>9550
buffer_size =>100000
codec =>json
}
}
filter {
if [type] == "syslog" and [program] == "php" and [message] =~ /PHP Notice/ {
drop { }
}
}
output {
# 這里你可以自由地配置你需要輸出的action
stdout { codec =>rubydebug }
}
上述配置根據是否成功采集了PHP程序報錯信息,將會輸出“ruby”調試日志。
由于Logstash是一個通用的日志采集處理工具,它可以非常自由地根據不同的需求進行靈活的配置操作,并且可以同時監控多個服務,記錄下不同服務產生的日志內容。
總之,Logstash可以為我們處理許多問題。在使用PHP時,將PHP出錯日志轉存到Logstash中可以為我們提供一個方便的,可以自定義操作的日志處理方法。
上一篇logozw.php