|
源码:
#include <syslog.h>
#include <stdio.h>
#include <stdarg.h>
/* Boolean flag - send messages to console as well as syslog */
static int log_console = 0; //是否发送信息到控制台
void
enable_console_log(void) {
log_console = 1;
}
void
log_message(const int facility, const char *format, ...) //可变参数
{
va_list args;
char buf[256];
va_start(args, format);
vsnprintf(buf, sizeof(buf), format, args);
va_end(args);
if (log_console) {
fprintf(stderr, "%s\n", buf);
}
syslog(facility, "%s", buf); // syslog日志
}
调用方式:
log_message(LOG_INFO, " SNMP Trap enabled");
在主函数main.c中:
if (debug & 1)
enable_console_log();
关于syslog相关代码:
打开
openlog(PROG, LOG_PID | ((debug & 1) ? LOG_CONS : 0), log_facility);
其中:
#define PROG "genhash"
int log_facility = LOG_DAEMON;
void openlog(const char *ident, int option, int facility);
此函数用来打开一个到系统日志记录程序的连接,打开之后就可以用syslog或vsyslog函数向系统日志里添加信息了。
openlog的第一个参数ident将是一个标记,ident所表示的字符串将固定地加在每行日志的前面以标识这个日志,通常就写成当前程序的名称以作标记。也就是区分日志的一个标记字符,可以由我们自己来设定。
第二个参数option应该是日志消息格式内容的配置选项。是下列值取与运算的结果:LOG_CONS, LOG_NDELAY, LOG_NOWAIT, LOG_ODELAY, LOG_PERROR, LOG_PID,各值意义请参考man openlog手册
第三个参数指明记录日志的程序的类型,我们都只用LOG_LOCAL0 到 LOG_LOCAL7中的任意一个。可选的程序有很多
关闭
closelog();
版权声明:本文为博主原创文章,未经博主允许不得转载。 |
|
|