linux 日誌編程(總結)

日誌主要涉及3個函數,分別是openlog、syslog和closelog函數。表8.4所示爲這3個函數的具體信息。

 openlog、syslog和closelog函數


說明:openlog函數用於打開系統日誌連接。只有在打開連接後,才能使用syslog函數向日志文件中添加日誌信息。closelog函數用於關閉打開的系統日誌連接,該函數的調用在實現中是可選擇的。

 

openlog函數中的第1個參數爲ident,該參數常用來表示信息的來源。ident指向的字符信息會被固定地添加在每行日誌的前面。第2個參數option用於指定openlog函數和接下來調用的syslog函數的控制標誌。option的取值情況如表8.5所示,可以單獨取其中的某個值,也可以通過與運算來獲得多種特性。第3個參數爲facility,這個要與syslogd守護進程的配置文件對應,日誌信息會寫入syslog.conf文件指定的位置。

 openlong函數中的option取值表


openlog函數參數facility取值


syslog函數中的第一個參數priority表示消息的級別。與openlog函數中的facility參數類似,priority參數與level也存在對應的關係。

syslog函數參數priority取值


syslog函數的第二個參數爲消息的格式,之後是格式對應的參數。函數的使用類似於printf函數。

 

#include <stdio.h>
#include <syslog.h>

int main(int argc,char* argv[])
{
       openlog("HEMM",LOG_CONS | LOG_PID, LOG_USER);

       int count=0;
       while(count<5){
             syslog(LOG_INFO,"%d, log info test...",count);
             count++;
      }

      closelog();

      return 0;
}

 

調用syslog函數時,指定的priority爲LOG_INFO,對應於syslog.conf中的info優先級。而調用openlog函數的facility爲LOG_USER,對應於syslog.conf中facility取user的情況。查找syslog.conf中的facility.level爲user.info的規則,如圖8.7所示。可知,日誌文件爲/var/log/message。

由於查看/var/log下的日誌需要root權限,使用su切換到root用戶。使用tail命令查看message文件中的日誌信息,發現相關信息已經通過syslogd守護進程記錄在了/var/log/message日誌文件中

 

Jul 13 11:54:08 localhost HEMM[7631]: 0, log info test...
Jul 13 11:54:08 localhost HEMM[7631]: 1, log info test...
Jul 13 11:54:08 localhost HEMM[7631]: 2, log info test...
Jul 13 11:54:08 localhost HEMM[7631]: 3, log info test...
Jul 13 11:54:08 localhost HEMM[7631]: 4, log info test...


發佈了35 篇原創文章 · 獲贊 20 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章