一、 Template功能
- 根据用户需求指定任意格式
- 动态生成文件名
- 每个输出都使用了一些模板,包括针对文件的,针对用户消息等
备注:
- 旧版本:$template
- 新版本:template()
V6之前是旧格式
V7版本,传统语法与最新配置可在配置文件中混合使用,我们下面学习的是新格式。
二、Template()声明
1.作用
用来定义模板,是一种静态声明,表示所有的模板都会在rsyslog读取配置文件的时候被定义。template不会受到if语句或嵌入配置的影响。
2.基本声明结构
template(parameters)
list templates则是一种扩展的支持 template(parameters) {list-descriptions}
3.template的类型
类型参数指定不同的template类型,不同类型就可以使用不同的方法来定义template的内容,类型不会影响插件工作,合适的template类型会很好的匹配需求。
- List
- Subtree
- String
- Plugin
下面具体讲一下每种类型
三、四种类型的学习
1. list类型
List template是由一系列反复出现的内容和变量语句生成的,内容通过“{}”包含起来,这种类型一般用于已知输出结构的情况,比如,ommongodb。建议在有复杂属性替换的情况下使用这种类型,比较清晰
List template包含template头部(type = "list")和紧接着的用”{}”括起来的constant和property部分。
- constant:不变的,对反复出现的文本进行描述
- property:描述属性。对于property有多种可用的选项,大多数选项被用来提取部分的属性内容或者用来修改文本(比如将大写字母转换为小写字母)
举例:
template(name="tpl1" type="list"){ constant(value="Syslog MSG is: '") property(name="msg") constant(value="', ") property(name="timereported" dataFormat="rfc3339" caseConversion="lower") constant(value=" ") }
备注:这个示例可能会被用于定位常见的文件输出
(1)常量的声明(constant statement)
一种指定常量文本的方法。常量主要用于基于文本的输出。
举例:
template(name="outfmt" type="list"){ property(name="$!user!msgnum") constant(value+" ") }
下面是常量文本中可被识别的一系列转义字符的含义:
单个反斜线 |
|
|
换行(line feed) |