linux 日誌程式設計(總結)

2021-05-22 17:39:45 字數 2882 閱讀 5691

日誌主要涉及3個函式,分別是openlog、syslog和closelog函式。表8.4所示為這3個函式的具體資訊。

openlog、syslog和closelog函式

標頭檔案

函式形式

void openlog(const char *ident, int option, int facility);

void syslog(int priority, const char *format, ...);

void closelog(void);

返回值 成功

失敗是否設定

errno −

− −說明:openlog函式用於開啟系統日誌連線。只有在開啟連線後,才能使用syslog函式向日誌檔案中新增日誌資訊。closelog函式用於關閉開啟的系統日誌連線,該函式的呼叫在實現中是可選擇的。

openlog函式中的第1個引數為ident,該引數常用來表示資訊的**。ident指向的字元資訊會被固定地新增在每行日誌的前面。第2個參 數option用於指定openlog函式和接下來呼叫的syslog函式的控制標誌。option的取值情況如表8.5所示,可以單獨取其中的某個值, 也可以通過與運算來獲得多種特性。第3個引數為facility,這個要與syslogd守護程序的配置檔案對應,日誌資訊會寫入syslog.conf 檔案指定的位置。

openlong函式中的option取值表 參 數

說 明

log_cons

如果將資訊傳送給

syslogd

守護程序時發生錯誤,直接將相關資訊輸出到終端

log_ndelay

立即開啟與系統日誌的連線(通常情況下,只有在產生第一條日誌資訊的情況下才會開啟與日誌系統的連線)

log_nowait

在記錄日誌資訊時,不等待可能的子程序的建立

log_odelay

類似於log_ndelay

引數,與系統日誌的連線只有在

syslog

函式呼叫時才會建立

參 數 說

明 log_perror

在將資訊寫入日誌的同時,將資訊傳送到標準錯誤輸出(

posix.1-2001

不支援該引數)

log_pid

每條日誌資訊中都包括程序號

openlog函式引數facility取值

facility

引數 syslog.conf

中對應的

facility

取值 log_kern

kern

log_user

user

log_mail

mail

log_daemon

daemon

log_auth

auth

log_syslog

syslog

log_lpr

lprlog_news

news

log_uucp

uucp

log_cron

cron

log_authpriv

authpriv

log_ftp

ftplog_local0

~log_local7

local0

~local7

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

syslog函式引數priority取值

priority

引數 syslog.conf

中對應的

level

取值 log_emerg

emerg

log_alert

alert

log_crit

crit

log_err

errlog_warning

warning

log_notice

notice

log_info

info

log_debug

debug

syslog函式的第二個引數為訊息的格式,之後是格式對應的引數。函式的使用類似於printf函式。

#include

#include

int main(int argc,char* argv)

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

Linux日誌檔案 var log總結

總結常用的一些位於 var log 目錄之下的日誌檔案。其中一些只有特定版本採用,如dpkg.log只能在基於debian的系統中看到。檔案描述 var log messages 包括整體系統資訊,其中也包含系統啟動期間的日誌。此外,mail,cron,daemon,sftp,kern和auth等內...

linux程式設計錯誤總結

1 error string does not name a type 新增using std string或者使用using namespace std 2 c compile error discards qualifier 可能發生const常成員函式呼叫普通非const成員函式。3 erro...

Linux 核心程式設計總結

linux 核心程式設計總結 從事了幾年的核心程式設計,對核心程式設計有一定的經驗,現總結 吐槽下,作為標記。任何程序都有有程序的入口點,使用者態的程序,其入口點是,main函式。那麼核心的入口點是什麼?個人理解整個os,執行起來就是乙個程序,核心的入口點是init程序,在這個程序中負責 1 子程序...