我正在编写一个应用程序,其中包含一个 rsyslog 配置,该配置位于/etc/rsyslog.d/
.
某些日志消息应重定向到命名管道,如下所示:
template (name="my_fmt" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag% %msg%\n")
if ( ... ) then {
action(type="ompipe" Pipe="/tmp/SITENAME/pipe" Template="my_fmt")
stop
}
这按预期工作。不幸的是,上述管道名称中的 SITENAME 事先不知道,必须由客户配置。
我可以编写诸如“在文件中查找任何出现的 SITENAME 单词并将其替换为您的特定 $sitename”之类的指令,甚至可以发送sed
命令,但我不喜欢这种方法。相反,我想在文件的开头设置一个常量,并在需要的地方使用它。像这样:
set ACTUAL_SITE = "foo";
template (name="my_fmt" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag% %msg%\n")
if ( ... ) then {
action(type="ompipe" Pipe="/tmp/$ACTUAL_SITE/pipe" Template="my_fmt")
stop
}
我怎样才能做到这一点?我(想我)尝试了所有变体$
,%…%
并且%$…%
在Pipe="…"
部分中但没有奏效。ACTUAL_SITE
初始安装后从不更改的值。我只想为客户简化配置并说“将 ACTUAL_SITE 的值设置为您的实际站点名称”,而不是让他摆弄文件的其余部分。