我创建了一个规则来重定向文件 /etc/rsyslog.d/40-filter.conf 中包含 {FILTER} 的消息
:msg,contains,"{FILTER}" /var/log/filter.log
& ~
Run Code Online (Sandbox Code Playgroud)
我编辑了文件 /etc/rsyslog.conf 以便它通过取消注释行来接受远程 UDP 消息
$ModLoad imudp
$UDPServerRun 514
Run Code Online (Sandbox Code Playgroud)
我的系统日志消息的来源是以下简单的 python 脚本
#! /usr/bin/python
import logging
import logging.handlers
logger = logging.getLogger('LoggingTest')
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('{FILTER} %(message)s')
handler = logging.handlers.SysLogHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info("Test Message")
Run Code Online (Sandbox Code Playgroud)
我重新启动了 rsyslog 使用
sudo service rsyslog restart
Run Code Online (Sandbox Code Playgroud)
当我运行我的脚本时,以下行出现在 /var/log/messages、/var/log/syslog 和 /var/log/user.log 中,但它没有出现在 /var/log/filter.log 中,它存在但仍然存在空的。
Jun 23 17:18:29 {FILTER} Test Message
Run Code Online (Sandbox Code Playgroud)
如果我使用命令行工具“记录器”(下面给出的命令行示例),则规则应用正确
$ logger "{FILTER} Test Message 2"
$ cat /var/log/filter.log
Jun 23 17:21:28 NDU1010 nick: {FILTER} Test Message …
Run Code Online (Sandbox Code Playgroud)