当 rsyslogd 守护进程停止时,新的系统日志消息会发生什么?

What happens to the new syslog messages when rsyslogd daemon is stopped?

我试图在许多地方搜索此内容以及 documents/man 页的 openlog()、syslog(0、rsyslogd(8),但找不到答案。

我的问题是,如果 rsyslogd 已停止或尚未启动,那么新的系统日志消息会丢失吗?或者 rsyslogd 在启用后稍后从 /dev/log 获取它们?

我的测试是:

在 运行 系统上,rsyslog 是 运行。现在,执行以下操作:

  1. logger -p local7.notice "my custom message1"
  2. grep 消息 1 | /var/log/messages ----> 成功
  3. 停止 rsyslogd 进程
  4. logger -p local7.notice "My other custom message2"
  5. 现在,启动 rsyslogd 守护进程
  6. grep 消息 2 | /var/log/messages ----> 失败

我从 openlog(3) 和 syslog(3) 手册页了解到,为 /dev/log 文件打开了套接字,如果在将消息发送到 syslog 时出现错误(因为 rsyslogd 不是 运行) 然后关闭连接(如果您使用了 LOG_CONS/LOG_PERROR,消息将打印在 console/stderror 上)。

谁能告诉我:

  1. 有什么方法可以让 rsyslogd 在 syslog 文件出现时获取所有这些消息?
  2. 如果不是默认情况下,是否有任何系统调用、命令etc.etc.way可以做到这一点??

提前致谢。

-新

默认情况下不会发生。不过,您可以使用 'cat' 命令并将其通过管道传输到记录器以获取它们。像下面这样的东西应该可以工作。

cat your.log | logger -n yourserver

您也可以使用类似于 'cat' 的 'tail' 命令。