rsyslogd:任何方式来解决当地设施的数量?

我们有大约9-10个设备,我们希望将日志logging指向我们的rsyslog服务器。 但是,只有8个地方设施(0-7)。 我们如何解决这个限制?

在消息中logging应用程序名称。 筛选应用程序名称而不是设施。 如果您的应用程序不直接生成系统日志消息,则可以应用输出filter(例如sed )来按照您想要的方式进行按摩。

查看filter条件的Rsyslog文档,了解如何configuration此行为。 根据该页面中的信息,以下是如何将以string“application1”开头的消息放入/var/log/application1的示例:

 if $msg startswith 'application1' then /var/log/application1 

你也可以明确地过滤程序名称 ,如果你的应用程序设置正确:

 if $programname == 'application1' then /var/log/application1 

你可以在你的rsyslog.conf执行各种复杂的过滤。 阅读文档以获取更多信息和示例。

编辑: rsyslog可以使用模板为每个服务器创build单独的文件。 像下面这样的东西应该把所有的日志消息放到每个主机名的单独文件中。 (这是从联机帮助中解除的。)

 $template DynFile,"/var/log/system-%HOSTNAME%.log *.* ?DynFile 

以下是类似的,但不loggingdebugging消息。 它也使用连接主机名而不是消息主机名。 (这是基于我开发来loggingObi100输出的。)

 $template HostFormat,"%timegenerated% %fromhost% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n" $template HostFile,"/var/log/system-%fromhost%.log if $syslogseverity < 7 then -HostFile;HostFormat 

如果您有更复杂的需求,请阅读联机帮助页和文档,或者要了解上述内容。

按主机名过滤。 (每个设备应该有自己的主机名)。 如果你想要,你可以监听多个端口并分别处理每个端口。

设施的目的是处理消息类别,如授权,邮件,打印机,FTP等,因为UUCP不再使用了很多,你可能会使用它为自己的用途。 他们可能是您的configuration中的其他未使用的设施。 但是,最好使用标准设施值,并通过其他数据进行过滤。

有24个设施,因为它们是位掩码中的位的名称。 这使得在同一个日志中聚集任意一组设施。 该协议在RFC 5424中指定。

另一个领域是严重性。 通常情况下,日志包含等于或高于给定严重性的所有日志。 (较严重的优先级值较低,因此正常比较小于或等于选定的优先级)。但是,可以select给定设施的消息,就像通常为收集所有设施的debugging消息的debugging日志所做的那样。

您可能希望为同一个日志中的某些设施汇总数据,而不pipe源设备。 将相同的消息logging到多个日志文件是很常见的。