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感谢您的解决方案。