小编Sup*_*rMe的帖子

rsyslog 规则应用不一致

我创建了一个规则来重定向文件 /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)

logs rsyslog syslog

5
推荐指数
1
解决办法
981
查看次数

标签 统计

logs ×1

rsyslog ×1

syslog ×1