簡體   English   中英

有沒有辦法將syslog消息重定向到stdout?

[英]Is there a way to redirect syslog messages to stdout?

我有一個可以在兩種模式下運行的應用程序,可以是CLI,也可以是守護進程。

我正在使用syslog()進行日志記錄。 但是,在CLI模式下運行時,我希望所有日志記錄(標記為LOG_DEBUG的日志除外) LOG_DEBUG消息發送到控制台而不是記錄。

我曾嘗試使用setlogmask() ,但似乎沒有重定向到控制台。

做這個的最好方式是什么?

正如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上重復)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM