[英]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.