这个问题让我有点抓狂。我该如何根据程序名称路由 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');
};