我有一个可以在两种模式下运行的应用程序,或者使用CLI,或者作为一个守护进程。
I have an application that can run in two modes, either with a CLI, or as a daemon.
我使用的syslog()的记录。但是,在命令行模式下运行,我想所有的日志,除了那些标记 LOG_DEBUG ,消息被发送到控制台,而不是记录。
I am using syslog() for logging. However, when run in CLI mode I'd like all the logging, except those marked LOG_DEBUG, messages to be sent to the console instead of logged.
我曾尝试使用 setlogmask(),但这似乎并没有重定向到控制台。
I have tried to use setlogmask(), but that doesn't seem to redirect to console.
什么是做到这一点的最好方法是什么?
What is the best way to do this?
推荐答案作为由maverik的意见建议,我写了周围的syslog的包装,确定是否将输出发送到日志或控制台。这万一有谁需要这个。
As suggested in the comments by maverik, I wrote a wrapper around syslog that determines whether to send the output to the log or console. Here it is in case anyone ever needs this.
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); }更多推荐
有没有一种方法来重定向系统日志消息到标准输出?
发布评论