将变量参数列表传递给syslog

时间:2014-08-18 06:43:49

标签: c++ parameter-passing syslog

我尝试将变量参数列表传递给另一个函数。已经存在一个非常相似的问题:How to pass variable number of arguments to printf/sprintf 但对我来说它不起作用。我不知道为什么。这是我的功能:

void printSyslogNotice(const char *fmt, ...)
{
      va_list ap;
      va_start(ap, fmt);
      #ifdef __XENO__
         rt_syslog(LOG_NOTICE, fmt, ap);
      #else
         syslog(LOG_NOTICE, fmt, ap);
      #endif
      va_end(ap);
}

当我打电话给:

printSyslogNotice("%s %i", "hello world", 5);

我得到了这个输出:#010 -939524064

毋庸置疑,我想这个输出:hello world 5

有人有想法吗?

1 个答案:

答案 0 :(得分:4)

您应该使用vsyslog,而不是syslogsyslog收到变量参数包,但不是va_list。如果您想调用syslog,则应按原样传递参数,而不是va_list