我使用 /var/rsyslog/foo.conf 配置 rsyslog 服务器以接受 udp 消息
$ModLoad imudp
$UDPServerRun 514
并尝试将以“foo”开头的日志内容过滤到/var/log/foo.log。我尝试了几种过滤器。
:msg, contains, "foo" /var/log/foo.log
:msg, startswith, "foo" /var/log/foo.log
:msg, regex, "'^\s*foo.*" /var/log/foo.log
if $msg startswith 'foo' then /var/log/foo.log;
什么都不起作用。我可以在 /vag/log/syslog 中获得正确的信息,但无法过滤它并将其输出到 foo.log。我从 syslog 收到的消息如下:
2023-12-02T17:06:20.852836+00:00 foo
这证明udp和一般日志记录是好的。但不知道为什么过滤器不起作用。
我的rsyslog服务器版本是8.2302.0,操作系统是Debian 12。
我调试了rsyslog并解决了问题。
进入的日志是
/var/log/syslog
:这意味着
foo
会被识别为source
notmsg
。按照RFC5424格式发送消息解决问题:在这种情况下,系统日志将如下所示记录:
并且过滤器工作正常。