rsyslog的属性替换功能
基于位置
%property:fromChar:toChar:options%
- fromChar和toChar都是数字,表示字符的位置,从1开始。
- 结束符合可以用$替代,比如指定从第10个字符开始,一直到字符串尾:
%msg:10:$%
基于字段(Field)
%property:F,separater:index%
- separater 是分割字符的ascii码值,例如'#'就是35,','就是44
- index就是第几个字段
例如
%msg:F,59:3%
含义是对msg字段按照';'分割,然后取第三个字段。
这个地方有一个增强功能是如果分割符有多个连续字符,例如"AA BB CC",BB和CC之间有多个空格隔开,我们仍然想把它解释为三个字段,那么可以使用分割符号后面根一个加号'+':
%msg:F,32+:3%
基于规则表达式
语法是:
%property:R:regexp–end%
- 相当于在FromChar的位置使用一个R
- 在ToChar的位置使用规则表达式,并且正则表达式结尾必须跟一个–end
然后属性替代器会返回:与正则表达式匹配的属性文本内容。
另外属性R可以指定一些参数:
R,<regexp-type>,<submatch>,<nomatch>,<match-number>
我还没有试过这些参数,所以不好写用法,以后再补充吧。
- regexp-type: BRE|ERE,表示basic regexpr,和extend regexpr
- nomatch表示找不到匹配时使用的内容
- submatch/match-number这两个参数我没有看懂文档,所以就不写了。
网友评论