我们有几个设备正在发送系统日志,不幸的是它们的主机名与服务上配置的实际名称不同
我正在运行最新的 rsyslog 版本。
目前我已将其保存为单独的 conf 文件:
template (name="stats" type="string" string="/logs/stats/host-%rawmsg:R,ERE,1,DFLT:gw_name="([^"]*)--end%-%$year%-%$month%-%$day%.log")
local4.* action(type="omfile" dynaFile="stats")
这些不会生成日志文件。
原始消息示例
Mar 31 17:33:02 localhost root: log_type="stats", local_time="2021/03/31 17:33 BST", mx_ip="10.191.205.240",gw_name="Appliance_NAME", gw_ip="1.0.0.41", version="1.5.0.", model="1000", serial_no="1xxxxxx8", ssl_card="Yes", total_traffic="0", app_traffic="0", cpu="0"
这会将日志文件保存为 host-Appliance_NAME-2021-03-31
我们有一个过时的 rsyslog 版本 5.4,我们需要迁移到最新版本,因此出现这种情况。
答案1
模板中存在语法错误,在测试运行中可能会发现 ( rsyslogd -N1
)。该部分string="/logs/...%rawmsg...gw_name="([^"]*)...
在双引号内使用了双引号。您需要使用前面的反斜杠 来转义内部双引号...gw_name=\"([^\"]*)...
。