有什么办法来抑制syslogd中的特定消息? 我有几个Linux的Oracle 5.10服务器与syslogd 1.4.1由于我所有的服务器是生产服务器 – 我不能升级syslogd rsyslogd(过滤消息是可能的)。 任何想法如何实现它?
正如你已经发现的,旧的syslogd本身没有这种过滤能力。 这意味着如果你想过滤这些信息,你需要使用一些外部程序来为你过滤。
如果你处在任何一种大环境中,我首先build议你build立一个单独的系统日志服务器,并将日志redirect到那个服务器。 在该服务器上,您可以使用具有过滤function的更现代的系统日志应用程序。
但是,如果您想要或需要将内核日志保留在本地计算机上,则可以通过一些技巧来解决这个问题。
最简单的方法是让syslog将日志写入非标准的日志文件,例如
kern.err /var/tmp/kernel-unfiltered
然后,你可以简单地看一个脚本来监视/ var / tmp / kernel-unfiltered,对于任何不符合你想要过滤的行,重新注入logger但是使用另一个工具或者loglevel,或者直接写到你想要的日志文件。
另一种方法是使用pipe道。 Syslogd不能直接写入程序(否则pipe道到grep -v THEMESSAGE > /var/log/kernel.log将是明显的解决scheme),但它可以login到一个命名pipe道 – 然后你可以有一个单独的程序从该pipe道读取并过滤出所需的消息,然后重新注入消息或直接写入日志文件。 你会使用例如创buildpipe道
mkfifo /var/tmp/logfifo
和configuration将
kern.err |/var/tmp/logfifo
与使用实际文件相比,这样做的好处是减less用垃圾填充文件系统的风险。
除非有详细logging,否则这两种解决scheme都可能会给任何接pipe这些系统的新人带来许多麻烦。