如何让 syslog-ng 过滤用户名?

如何让 syslog-ng 过滤用户名?

我发现 syslog-ng 的一个很好的功能:如果我使用记录器为了记录用户进程中的内容,我获取了记录用户名。左右如此:

peterh$ echo test log message|logger

然后我得到这个/var/log/messages

Oct 12 16:38:29 thehost peterh: test log message

其中“thehost”是服务器的主机名,“peterh”是我在下面给出的命令的用户名。

现在我想要的是:我想使用 syslog-ng 将特定用户的日志条目收集到特定文件中

syslog-ng 用来过滤整个日志条目的功能看起来很糟糕,但有时却不起作用:

# Doesn't work - it doesn't do anything
filter f_peterh { match('peterh'); };
destination d_filter { file("/var/log/peterh.log"); };
log { source(s_src); filter(f_peterh); destination(d_peterh); };

网络上许多地方提供的文档讨论了从日志消息的二进制格式到相关 RFC 的所有内容,除了如何过滤系统日志中的用户名

怎么做?

答案1

我不知道这是否仍然适合您,但对于其他尝试按用户名进行过滤的人来说,这就是我能够做到的方式的参考。

我创建了以下过滤器。

filter sampleUserFilter {
        facility (user) and match ("myUser" value ("PROGRAM"));
};

这允许我将来自特定用户(使用记录器)的消息路由到单独的文件。

相关内容