C 如何使用syslog()记录相同的消息?
我正在尝试使用C 如何使用syslog()记录相同的消息?,c,repeat,syslog,C,Repeat,Syslog,我正在尝试使用syslog.h库在我的项目中记录消息。我注意到,如果我尝试记录相同的消息,在/var/log/syslog中,它只出现一次;下面是我的示例代码和设置: int main(int argc, char *argv[]) { //Initialize syslog setlogmask(LOG_UPTO(LOG_NOTICE)); openlog("example_process", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER);
syslog.h
库在我的项目中记录消息。我注意到,如果我尝试记录相同的消息,在/var/log/syslog
中,它只出现一次;下面是我的示例代码和设置:
int main(int argc, char *argv[])
{
//Initialize syslog
setlogmask(LOG_UPTO(LOG_NOTICE));
openlog("example_process", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER);
while(main_loop == LOOP_CONTINUE)
{
syslog(LOG_ERR, "Data Logged!\n");
sleep(60);
}
closelog();
}
这就是结果:
Feb 11 23:27:19 andrea-Aspire-5745G example_process[17332]: Data Logged!
andrea@andrea-Aspire-5745G:~$
但是如果我在中更改代码
int main(int argc, char *argv[])
{
//Initialize syslog
setlogmask(LOG_UPTO(LOG_NOTICE));
openlog("example_process", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER);
while(main_loop == LOOP_CONTINUE)
{
syslog(LOG_ERR, "Data Logged!\n");
syslog(LOG_ERR, "Data Logged2!\n");
sleep(60);
}
closelog();
}
它反复写道:
Feb 11 17:43:06 andrea-Aspire-5745G example_process[7645]: Data Logged!
Feb 11 17:43:06 andrea-Aspire-5745G example_process[7645]: Data Logged2!
Feb 11 17:43:10 andrea-Aspire-5745G example_process[7645]: Data Logged!
Feb 11 17:43:10 andrea-Aspire-5745G example_process[7645]: Data Logged2!
Feb 11 17:43:13 andrea-Aspire-5745G example_process[7645]: Data Logged!
Feb 11 17:43:13 andrea-Aspire-5745G example_process[7645]: Data Logged2!
我知道记录每一条相同的消息不是一个好主意,但我的问题是:
是否有一种方法或选项使之成为可能?请参阅,在所有重复操作完成后,您将看到一条消息,上面写着“上一条消息重复N次”。我更担心
睡眠的原因(60)
没有将消息间隔为60秒。@user3629249很抱歉,我从日志文件的错误部分复制了消息。@Barmar感谢您的解决方案。请参阅,在所有重复操作完成后,您将看到一条消息,上面写着“上次消息重复N次”。我更担心睡眠(60)的原因
没有将消息间隔为60秒。@user3629249很抱歉,我从日志文件的错误部分复制了消息。@Barmar感谢您的解决方案。