用途
用於打開系統記錄。
函式頭檔案
#include<syslog.h>
函式原型
void openlog(const char *ident, int option, int facility);
描述
openlog()打開一個程式的系統記錄器的連線。本函式呼叫 UNIX 系統的 openlog() 函式,因此在 Windows 系列的作業系統中,本函式沒有完全的實作。
1.idents指向的字元串可以是想要打出的任意字元,它所表示的字元串將固定地加在每行日誌的前面以標識這個日誌,該標誌通常設定為程式的名稱。
2.option參數所指定的標誌用來控制openlog()操作和syslog()的後續調用。他的值為具體是下列值取或運算的結果
LOG_CONS
直接寫入系統控制台,如果有一個錯誤,同時傳送到系統日誌記錄。
LOG_NDELAY
立即打開連線(通常,打開連線時記錄的第一條訊息)。
LOG_NOWAIT
不要等待子進程,因為其有可能在記錄訊息的時候就被創建了(GNU C庫不創建子進程,所以該選項在Linux上沒有影響。)
LOG_ODELAY
延遲連線的打開直到syslog函式調用。(這是默認情況下,需要沒被指定的情況下。)
LOG_PERROR
(不在SUSv3情況下)同時輸出到stderr(標準錯誤檔案)。
LOG_PID
包括每個訊息的PID。
3.facility參數是用來指定記錄訊息程式的類型。它讓指定的配置檔案,將以不同的方式來處理來自不同方式的訊息。它的值可能為 LOG_KERN、LOG_USER、LOG_MAIL、LOG_DAEMON、LOG_AUTH、LOG_SYSLOG、LOG_LPR、LOG_NEWS、LOG_UUCP、LOG_CRON 或 LOG_AUTHPRIV
各個值的具體意義我們可以參照man openlog 手冊。
LOG_AUTH
security/authorization messages (DEPRECATED Use LOG_AUTHPRIV
instead)
LOG_AUTHPRIV
security/authorization messages (private)
LOG_CRON
clock daemon (cron and at)
LOG_DAEMON
system daemons without separate facility value
LOG_FTP
ftp daemon
LOG_KERN
kernel messages
LOG_LOCAL0 through LOG_LOCAL7
reserved for local use
LOG_LPR
line printer subsystem
LOG_MAIL
mail subsystem
LOG_NEWS
USENET news subsystem
LOG_SYSLOG
messages generated internally by syslogd
LOG_USER (default)
generic user-level messages
LOG_UUCP
UUCP subsystem
示例代碼
#include <syslog.h>
int main(int argc, char **argv)
{
openlog("Test", LOG_CONS | LOG_PID, LOG_USER );
syslog(LOG_INFO,"This is a massage just for test");
closelog();
return 0;
}
運行後,"This is a massage just for test"字元串一般被寫入到/var/adm或/var/log目錄下的信息檔案中(messages.*),當然這得看syslogd的配置