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``