有没有办法将syslog消息重定向到stdout?

Bra*_*tes 8 c linux syslog

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

我正在syslog()用于记录.但是,在CLI模式下运行时,我希望所有日志记录(标记除外)都将LOG_DEBUG消息发送到控制台而不是记录.

我试图使用setlogmask(),但似乎没有重定向到控制台.

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

Bra*_*tes 4

正如 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);
}
Run Code Online (Sandbox Code Playgroud)

  • 从函数返回之前调用“va_end(args)”。 (4认同)