匹配syslog-ng中的nxlog中设置的SourceName

这个让我有点疯狂 如何根据程序名来路由syslog-ng收到的nxlog消息? 它应该是自我解释,但它不能正常工作。 这些消息被放到syslog-ng的通用日志文件中,而没有应用过滤。

我使用nxlog发送这样的IIS日志:

<Input W3SVC> Module im_file ... Exec $SourceName = 'IIS'; ... </Input> <Route W3SVC> Path W3SVC => IIS_Syslog </Route> <Output IIS_Syslog> Module om_udp Host xxx Port xxx Exec to_syslog_ietf(); </Output> 

这发送到一个syslog-ng服务器应该赶上下面的filter。

 filter f_iis { source ('IIS'); }; 

或者我试过以下

 filter f_iis { program ('IIS'); }; 

如果你将它作为纯系统日志(即在nxlog.conf使用to_syslog_bsd() ),那么$ SourceName(= IIS )的值将在RFC3164调用TAG的部分的消息中:

 The value in the TAG field will be the name of the program or process that generated the message. 

Syslog-ng调用这个program ,所以我相信第二个应该做你需要的:

  filter f_iis { program ('IIS'); };