php如何將日誌寫進syslog

在做項目的時候們爲了方便運維,我們經常需要將系統日誌寫入系統syslog,下邊我們就介紹一下,在linux下php對syslog的操作:

  1. 在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 

第二個參數爲具體的日誌內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章