Syslog with C++

本文详细解析了Syslog日志系统中使用的优先级和设施编码方式,包括从紧急到调试级别的8种优先级定义,以及从内核消息到本地保留用途的24种设施代码说明。同时介绍了Syslog操作相关的函数如openlog、syslog和closelog的使用方法。

syslog

priorities/facilities are encoded into a single 32-bit quantity, where the
bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
(0-big number). Both the priorities and the facilities map roughly
one-to-one to strings in the syslogd(8) source code. This mapping is
included in this file.

priorities (these are ordered)

#define LOG_EMERG       0               /* system is unusable */
#define LOG_ALERT       1               /* action must be taken immediately */
#define LOG_CRIT        2               /* critical conditions */
#define LOG_ERR         3               /* error conditions */
#define LOG_WARNING     4               /* warning conditions */
#define LOG_NOTICE      5               /* normal but significant condition */
#define LOG_INFO        6               /* informational */
#define LOG_DEBUG       7               /* debug-level messages */

facility codes

#define LOG_KERN        (0<<3)          /* kernel messages */
#define LOG_USER        (1<<3)          /* random user-level messages */
#define LOG_MAIL        (2<<3)          /* mail system */
#define LOG_DAEMON      (3<<3)          /* system daemons */
#define LOG_AUTH        (4<<3)          /* security/authorization messages */
#define LOG_SYSLOG      (5<<3)          /* messages generated internally by syslogd */
#define LOG_LPR         (6<<3)          /* line printer subsystem */
#define LOG_NEWS        (7<<3)          /* network news subsystem */
#define LOG_UUCP        (8<<3)          /* UUCP subsystem */
#define LOG_CRON        (9<<3)          /* clock daemon */
#define LOG_AUTHPRIV    (10<<3)         /* security/authorization messages (private) */
#define LOG_FTP         (11<<3)         /* ftp daemon */

other codes through 15 reserved for system use */

#define LOG_LOCAL0      (16<<3)         /* reserved for local use */
#define LOG_LOCAL1      (17<<3)         /* reserved for local use */
#define LOG_LOCAL2      (18<<3)         /* reserved for local use */
#define LOG_LOCAL3      (19<<3)         /* reserved for local use */
#define LOG_LOCAL4      (20<<3)         /* reserved for local use */
#define LOG_LOCAL5      (21<<3)         /* reserved for local use */
#define LOG_LOCAL6      (22<<3)         /* reserved for local use */
#define LOG_LOCAL7      (23<<3)         /* reserved for local use */

Option flags for openlog.

LOG_ODELAY no longer does anything.
LOG_NDELAY is the inverse of what it used to be.

#define LOG_PID         0x01            /* log the pid with each message */
#define LOG_CONS        0x02            /* log on the console if errors in sending */
#define LOG_ODELAY      0x04            /* delay open until first syslog() (default) */
#define LOG_NDELAY      0x08            /* don't delay open */
#define LOG_NOWAIT      0x10            /* don't wait for console forks: DEPRECATED */
#define LOG_PERROR      0x20            /* log to stderr as well */

closelog

void closelog (void);

Close descriptor used to write to system logger.
This function is a possible cancellation point and therefore not
marked with __THROW.

openlog

void openlog (const char *__ident, int __option, int __facility);

Open connection to system logger.
This function is a possible cancellation point and therefore not
marked with __THROW.

setlogmask

int setlogmask (int __mask) __THROW;

Set the log mask level.

syslog

void syslog (int __pri, const char *__fmt, ...)
     __attribute__ ((__format__ (__printf__, 2, 3)));

Generate a log message using FMT string and option arguments.
This function is a possible cancellation point and therefore not
marked with __THROW.

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

int main(int argc, char **argv) {

    openlog("TestProgram", LOG_PID, LOG_INFO | LOG_USER);
    syslog(LOG_USER, "Hello World!");
    closelog();
    return 0;

}

// [root@localhost syslog]#
// Message from syslogd@localhost at Mar 20 08:10:21 ...
// TestProgram[42015]:Hello World!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值