3.2.1.2 配置示例
3.2.1.2.1 template
template有两种写法,在 6.0版本之前,只能使用下面这种。
$template name,param[,options]
之后,还可以并且推荐使用这种。
template(parameters) { list-descriptions }
不过目前 CentOS6默认的 Rsyslog版本较低,不做单独升级的话,只能使用上面第一种写法。
在新版 Rsyslog中,template有四种类型:list、subtree、string和 plugin。
a.list
标准情况下,template使用 list来输出结构化的数据,比如 ommongodb,当然也可以输出成文本。如下为 Rsyslog默认的文本输出格式。
template(name="FileFormat" type="list") { property(name="timestamp" dateFormat="rfc3339")
constant(value=" ") property(name="hostname") constant(value=" ") property(name="syslogtag") constant(value=" ") property(name="msg" spifno1stsp="on" ) property(name="msg" droplastlf="on" ) constant(value="\n") }
b.subtree
使用 subtree输出成 CEE/Lumberjack格式(7.1.4版之后)。tree以“$!”开头过滤,只生成匹配 subtree的 JSON数据,示例如下。
set $!usr!tpl2!msg = $msg; set $!usr!tpl2!dataflow = field($msg, 58, 2); template(name="tpl2" type="subtree" subtree="$!usr!tpl2")
c.string
使用 string输出成字符串格式,当然其实 list保存成文件,和 string是等价的,之前提到的默认的 FileFormat模板,采用 string类型书写则如下。
template(name="FileFormat" type="string" string= "%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%% msg:::drop-last-lf%\n" )
string类型作为传统类型,还可以采用旧版样式书写,如下。
$template FileFormat, "%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
d.plugin
使用 plugin则按照 plugin提供的参数书写,如下。
template(name="MyTemplateName" type="plugin" string="mystrgen")
同样可以采用旧版样式书写,如下。
$template MyTemplateName,=mystrgen