有没有办法将系统日志消息redirect到标准输出?

我有一个可以以两种模式运行的应用程序,可以是CLI,也可以是守护进程。

我正在使用syslog()进行日志logging。 但是,在CLI模式下运行时,我希望所有的日志logging,除了那些标记为LOG_DEBUG的日志,都要发送到控制台而不是日志logging。

我试图使用setlogmask() ,但似乎没有redirect到控制台。

做这个的最好方式是什么?

Solutions Collecting From Web of "有没有办法将系统日志消息redirect到标准输出?"

正如maverik的评论中所建议的那样,我写了一个封装syslog的包装器来确定是否将输出发送到日志或控制台。 在这里,任何人都需要这个。

 void mylog (int level, const char *format, ...) { va_list args; va_start (args, format); if (remote) { vsyslog(level, format, args); } else { if (level == LOG_DEBUG) vsyslog(level, format, args); else vprintf(format, args); } va_end(args); } 

作为GNU特定的解决方案,我建议使用openlog(NULL, LOG_PERROR, your_facility) 。 不可定制(只在stderr上重复)。