本篇文章是對php中將日誌寫進syslog的方法進行了詳細的分析介紹,需要的朋友參考下
在做項目的時候們為了方便營運,我們經常需要將系統日誌寫入系統syslog,下邊我們就介紹一下,在linux下php對syslog的操作:
在linux中配置syslog
在linux中,facility(裝置)有以下幾種:
AUTH 普通安全/授權訊息
AUTHPRIV 私人安全/授權訊息
CRON 定時器進程
DAEMON 守護進程
KERN 核心訊息
LOCAL0 ... LOCAL7 本地應用,在windows上不支援
LPR 行式印表機
MAIL 郵件服務
NEWS 新聞服務
SYSLOG 由syslogd內部產生的訊息
USER 通用的使用者級資訊
UUCP UUCP子系統
登入linux系統,進入/etc目錄,輸入:
複製代碼 代碼如下:
vim syslog.conf
開啟syslog的設定檔
在這裡,你可以看到syslog的所有配置資訊,這裡定義了在上一節中提到的每種日誌類型儲存日誌所使用的條件,如:
daemon.* -/var/log/daemon.log
定義了daemon所產生的日誌的儲存位置,其中daemon為日誌類型,“*”代表將所有層級的日誌都放到該檔案。格式為:
facility。level -記錄檔儲存的路徑,如-/var/log/daemon.log
level包括:
emerg -該系統不可用
alert -需要立即被修改的條件
crit -阻止某些工具或子系統功能實現的錯誤條件
err -阻止工具或某些子系統部分功能實現的錯誤條件
warning -預警資訊
notice -具有重要性的普通條件
info -提供資訊的訊息
debug -不包含函數條件或問題的其他資訊
none -沒有重要級,通常用於排錯
* 所有層級,除了none
下面我們在設定檔中定義一個自己裝置的日誌規則:local4.info -/var/log/
接下來執行命令/etc/init.d/sysklogd restart或/etc/init.d/sysklogd reload使新增的配置生效,下面我們可以測試新增的日誌規則了:
1.輸入命令 logger -p local4.info " my test log"
2.執行命令 tail /var/log/event_log.log
你可以看到自己寫入的日誌資訊:
注意:syslog.conf中local4.info 代表所有info層級以及以上的日誌會記錄到這裡
ok,到現在我們已經在ubuntu中設定好了我們需要的日誌,下面我們用php中的syslog將日誌寫到ubuntu中的syslog中。
下面直接上php代碼:
複製代碼 代碼如下:
openlog("Event1.0", LOG_PID | LOG_PERROR, LOG_LOCAL4);
syslog($level, "LOG MESSAGE: " . $errinfo);
closelog();
以上各方法的具體用法請查看PHP的API,具體用法不在這裡贅述。
其中openlog的第一個參數,是日誌標識,該標識會自動加在日誌資訊的開始,用來表示是什麼系統寫入的日誌。
由於我們想要將日誌寫入local4.info,所以第三個參數需使用LOG_LOCAL4,該參數表示寫入日誌的裝置資訊。
syslog中$level為記錄層級,包括:
LOG_EMERG system is unusable
LOG_ALERT action must be taken immediately
LOG_CRIT critical conditions
LOG_ERR error conditions
LOG_WARNING warning conditions
LOG_NOTICE normal, but significant, condition
LOG_INFO informational message
LOG_DEBUG debug-level message
第二個參數為具體的日誌內容。