我们有一些发送系统日志的设备,不幸的是它们的主机名与服务上配置的实际名称不同
我正在运行最新的 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,我们需要迁移到最新版本,因此出现这种情况。
模板中存在语法错误,可能在测试运行 (
rsyslogd -N1
) 中可见。该部分string="/logs/...%rawmsg...gw_name="([^"]*)...
在双引号内使用双引号。您需要使用前面的反斜杠转义内部双引号,...gw_name=\"([^\"]*)...
.