我有一个可以以两种模式运行的应用程序,可以是CLI,也可以是守护进程。
我正在使用syslog()进行日志logging。 但是,在CLI模式下运行时,我希望所有的日志logging,除了那些标记为LOG_DEBUG的日志,都要发送到控制台而不是日志logging。
我试图使用setlogmask() ,但似乎没有redirect到控制台。
做这个的最好方式是什么?
syslog存储错误消息
在Linux上将std :: coutredirect到syslog
系统日志性能是否可以改进?
Rsyslog使用TCP将日志消息定向到端口5000上的本地系统日志主机
通过syslog-ng转发日志
系统日志:如果存储空间较less,是否删除旧日志
在syslog消息中添加一年(linux)
linux系统日志如何工作?
如何避免从控制台上打印的syslog广播消息
二进制代码在kern.log和
正如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,args); else vprintf(format,args); } va_end(args); }
作为GNU特定的解决方案,我建议使用openlog(NULL,LOG_PERROR,your_facility) 。 不可定制(只在stderr上重复)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。