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

匹配 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 f_iis {
    source ('IIS'); 
};

或者我已经尝试了以下方法。

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

答案1

如果您将其作为普通的系统日志发送(即使用to_syslog_bsd()nxlog.conf,那么 $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'); 
 };

相关内容