一、syslog(),openlog(),closelog()一套用于寫系統日志的函數。
這三個函數openlog, syslog, closelog是一套系統日志寫入接口,另外那個vsyslog和syslog功能一樣,只是參數格式不同。
通常,syslog守護進程讀取三種格式的記錄消息。此守護進程在啟動時讀一個配置文件。一般來說,其文件名為/etc/syslog.conf,該文件決定了不同種類的消息應送向何處。例如,緊急消息可被送向系統管理員(若已登錄),并在控制臺上顯示,而警告消息則可記錄到一個文件中。該機制提供了syslog函數,其調用格式如下
#include <syslog.h>
void openlog (char*ident,int option ,int facility);
void syslog(int priority,char*format,……)
void closelog();
?
二、openlog
調用openlog是可選擇的。如果不調用openlog,則在第一次調用syslog時,自動調用openlog。調用closelog也是可選擇的,它只是關閉被用于與syslog守護進程通信的描述符。調用openlog 使我們可以指定一個ident,以后, 此ident 將被加至每則記錄消息中。ident 一般是程序的名稱 。4>openlog及closelog函數說明
此函數原型如下:
void openlog(const char *ident, int option, int facility);
此函數用來打開一個到系統日志記錄程序的連接,打開之后就可以用syslog或vsyslog函數向系統日志里添加信息了。而closelog函數就是用來關閉此連接的。
第一個參數ident將是一個標記,ident所表示的字符串將固定地加在每行日志的前面以標識這個日志,通常就寫成當前程序的名稱以作標記。
第二個參數option是下列值取與運算的結果:LOG_CONS, LOG_NDELAY, LOG_NOWAIT, LOG_ODELAY, LOG_PERROR, LOG_PID,各值意義請參考man openlog手冊:
l LOG_CONS:Write directly to system console if there is an error while sendingto system logger.
l LOG_NDELAY:Open the connection immediately (normally, the connection is openedwhen the first message is logged).
l LOG_NOWAIT:Don’t? wait? for? child processes that may have beencreated while logging the message.? (The GNU C library does not create a childprocess, so this option has no effect on Linux.)
l LOG_ODELAY: The converse of LOG_NDELAY; opening of the connection is delayeduntil syslog() is called.? (This is the? default,? and? neednot be specified.)
l LOG_PERROR:(Not in SUSv3.)Print to stderr as well.
l LOG_PID:Include PID with eachmessage.
第三個參數指明記錄日志的程序的類型。
?
三、syslog
syslog函數用于把日志消息發給系統程序syslogd去記錄,此函數原型是:void syslog(int priority, const char *format, ...);
第一個參數是消息的緊急級別,第二個參數是消息的格式,之后是格式對應的參數。就是printf函數一樣使用。
如果我們的程序要使用系統日志功能,只需要在程序啟動時使用openlog函數來連接syslogd程序,后面隨時用syslog函數寫日志就行了。
參考:
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
