【发布时间】:2015-11-03 06:01:36
【问题描述】:
我尝试在许多地方搜索此问题,还尝试在 openlog()、syslog(0、rsyslogd(8) 的文档/手册页中搜索,但找不到答案。
我的问题是,如果 rsyslogd 已停止或尚未启动,那么新的 syslog 消息会丢失吗?或者 rsyslogd 稍后在启用时从 /dev/log 获取它们?
我的测试是:
在正在运行的系统上,rsyslog 正在运行。现在,执行以下操作:
- logger -p local7.notice "my custom message1"
- grep 消息1 | /var/log/messages ----> 成功
- 停止 rsyslogd 进程
- logger -p local7.notice "My other custom message2"
- 现在,启动 rsyslogd 守护进程
- grep 消息2 | /var/log/messages ----> 失败
我从 openlog(3) 和 syslog(3) 手册页了解到,为 /dev/log 文件打开了一个套接字,如果在将消息发送到 syslog 时出现错误(因为 rsyslogd 没有运行),那么连接已关闭(如果您使用了 LOG_CONS/LOG_PERROR,则会在控制台/stderror 上打印消息)。
谁能告诉我:
- 当系统日志文件出现时,rsyslogd 有没有办法让所有这些消息都出现在 syslog 文件中?
- 如果不是默认情况下,是否有任何系统调用、命令等方法来做到这一点??
提前谢谢你。
-Neo
【问题讨论】: