Templates 模板:
########################温金
$template wj-flow01,"/data01/applog_backup/winfae_log/wj-flow01-catalina.out.%$year%-%$month%-%$day%" #定义TC:日志存放路径
$template wj-flow02,"/data01/applog_backup/winfae_log/wj-flow02-catalina.out.%$year%-%$month%-%$day%" #定义TC:日志存放路径
:syslogtag,isequal,"wj-flow01" -?wj-flow01;tocFormat
模板是rsyslog 的关键特征,它们允许指定任何用户需要的格式。
它们也可以用于动态文件名称生成, 每个output 在rsyslog 使用模板 - 使用真实的文件,
用户消息等等。
数据库写期望它的模板可以被一个合适的SQL语句,这个是高度自定义的。
你可以告诉要求左右这些工作当没有指定模板的时候)
答案是简单的,尽管模板兼容stock syslogd 格式是硬编码到rsyslogd.
这样如果没有模板指定,我们使用那些硬编码模板中的一个
Templates 是通过template() 语句指定,它们也可以通过$template legacy statements. 指定
注意: 模板的关键元素是rsyslog 属性
The template() statement
template() 语句是用于定义模板, 注意他是一个静态的语句,那意味着所有的模板是被定义当rsyslog 读取config文件的时候
因此,模板不会受到模板或者配置嵌套的影响
template(parameters)
除了这个简单的语法, 列表模板(下面有描述) 支持一个扩展的语法:
template(parameters) { list-descriptions }
每个模板有一个参数名称, 指定模板的类型。
名字参数必须是唯一的, 行为是无法预测的 如果它不是。
类型参数 指定不同的模板类型,不同的模板类型简单的让不同的方式来指定模板内容。
模板类型不会影响一个输出插件可用用它做什么。
list
subtree
string
plugin
The various types are described below.
list:
在这种情况下, 模板是通过一个常量和变量语句的列表生成的。
那些安装模板说明在大括号里。
这种类型也主要是使用结构输出,像ommongodb
然而, 它也很好的和基于文本的输出工作,我们推荐使用这个模式
如果 更加复杂的属性体检。在这种情况下, 基于列表的模板语法是更加清晰的相比简单的基于字符串的
列表模板包含列表Header(type="list") 是通过一个常量和属性语句,
在大括号里表示模板语句, 正如名字所说,常量语句描述常量文本和属性描述属性访问。
有很多选项来属性,下面有描述。很多那些选项是用于提取特定属性的内存或者来修改文本得到
template(name="tpl1" type="list") {
constant(value="Syslog MSG is: '")
property(name="msg")
constant(value="', ")
property(name="timereported" dateFormat="rfc3339" caseConversion="lower")
constant(value="
")
}
常量语句:
这个提供了一种方式来指定常量文本。文本是用于字面上的,
它主要是用于基于文本的输出,因此 一些常量文本可以被包含
比如,如果一个复杂的模板是创建用于文件输出,一个通常需要完成它通过一个新行,
可以通过一个常量语句介绍。
template(name="outfmt" type="list") {
property(name="$!usr!msgnum")
constant(value="
")
}
下面的转义序列被认为是在常量文本中:
1. \ 简单的反斜杠
2.
注意 如果一个不支持的字符跟着一个反斜杠,这是对待为一个错误,行为是不可预测的
避免 文本模板的使用 对于基于文本输出和结构使用,如果你要支持一些常量文本
例如 mongodb,你必须包含一个outname,这里可以看到:
template(name="outfmt" type="list") {
property(name="$!usr!msgnum")
constant(value="
" outname="IWantThisInMyDB")
}
常量语句支持以下参数:
值 常量值来使用
outname 输出域名字
属性声明
此语句是用于包含属性文件,它可以访问所有的属性。
选项允许来指定选择属性的部分或者修改它 它支持下面的参数:
传统格式:
在rsyslog v6之前, 你需要使用$template 语句来配置模板,
它们提供了等价于字符和基于插件的模板,传统的语句在V7继续可以用,然而我们推荐避免传统格式用于新的写入到配置文件,
传统的和当前配置语句可以共存于相同的配置文件
The general format is
$template name,param[,options]
########################温金
$template wj-flow01,"/data01/applog_backup/winfae_log/wj-flow01-catalina.out.%$year%-%$month%-%$day%" #定义TC:日志存放路径
"name" 是模板名字和"param" 是一个简单的参数 指定模板内容,选项部分是用于设置模板选项
字符串:
参数是同样的字符串 使用当前样式的格式你指定在字符串参数
$template strtpl,"PRI: %pri%, MSG: %msg%
"
$template tocFormat,"%msg%
"
注意 list 模板 是不可用的在传统格式里, 因此你需要使用复杂属性替换结构来做复杂的事情
保留模板名字:
模板名字以 “RSYSLOG_” 开头的是被保留用于rsyslog使用,
不要使用它们,否则 你可能受到一个冲突( 不可预知的行为)
传统的基于字符串的模板例子:
这个章节提供一些默认模板在 legacy format, 用于rsyslog v6之前的版本。
注意 这个格式仍旧被支持,因此没有必要硬升级现在的配置。
然而,它是强力推荐 传统的结构是不被使用了当制作新的模板。
注意每个 $template statement 是在一个单独的行,但是大概跨越多行来显示通过你的浏览器。
行是通过空行分隔,记录, 换行是重要的在 legacy format.
$template FileFormat,"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%
"
$template TraditionalFileFormat,"%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%
"
$template ForwardFormat,"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
$template TraditionalForwardFormat,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
$template StdSQLFormat,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%HOSTNAME%',
%syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",SQL``