将变量参数列表传递到系统日志

Fra*_* L. 1 c++ syslog parameter-passing

我尝试将可变参数列表传递给另一个函数。已经有一个非常相似的问题:如何将可变数量的参数传递给 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);
}
Run Code Online (Sandbox Code Playgroud)

当我用以下方式调用它时:

printSyslogNotice("%s %i", "hello world", 5);
Run Code Online (Sandbox Code Playgroud)

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

不用说,我想要这个输出:hello world 5

有人有想法吗?

For*_*veR 5

你应该使用vsyslog,而不是syslogsyslog接收可变参数包,但不接收va_list. 如果你想调用,syslog你应该按原样传递参数,而不是通过va_list.