Templates 模板:

来源:互联网 发布:公司网站源码 编辑:程序博客网 时间:2024/05/14 19:30
Templates 模板:模板是rsyslog的关键特征,它们允许指定用户需要的任何格式。它们也用于动态文件名生成。$EscapeControlCharactersOnReceive off$template tocFormat,"%fromhost-ip%,%$!metadata!filename%,%msg%\n"######weblogic 交易日志##################################################################################$template testlog01,"/data01/%fromhost-ip%/%syslogtag%.%$year%-%$month%-%$day%":syslogtag,isequal,"testlog01"  -?testlog01;tocFormat每个output 在rsyslog 使用模板,这对于文件来说是正确的,用户信息等待。数据库写期望它是模板成为适当的SQL语句因此这个是高度自定义的,你可能会问,当没有指定模板时,是 如何工作的? 非常好的问题。答案是简单的,尽管模板是和stock syslogd格式兼容的 是硬编码到rsyslod.因此如果没有指定模板,我们使用硬编码的模板模板是通过 template() statements 指定,也可以通过 $template legacy statements指定Template processing 模板处理:由于缺乏标准的日志格式,当一个模板是被指定是包含 HEADER, as defined in RFC5424这是非常重要的,以及如何理解rsyslog 是如何解析工作的比如,如果MSG 字段是设置为 “this:is a message” and no HOSTNAME,  也诶呦指定TAG解析器会分割消息为:TAG:this:MSG:is a message模板语句基本结构如下:template(parameters)除了简答的语法,list模板(下面要描述)支持扩展语法:template(parameters) { list-descriptions }每个模板有一个参数名字, 指定了模板的名字,和参数类型,指定了模板类型。 name parameter  必须是唯一的, 行为是不可预知的。type 参数执行不同的模板类型,不同的类型简单的启用不同的方式来指定模板内容。模板类型不影响 output 插件。因此使用最好的满足你需求的 下面的类型是可用的:    list    subtree    string    plugin在这种情况下,模板是有常量和变量语句生成的。安装大括号中的模板规范, 这种类型主要是对于使用结构意识输出,像ommongodb。然而,它也非常适合基于文本输出。我们推荐使用这个模板如果更加复杂的属性替换需要被处理。在那种情况下, list-based 模板语法是更加简单的相比简单的string-based列表模板包含模板头(使用 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="\n")    }这个例子是主要针对基于文件的输出constant statement 常量声明:这个提供一种方式指定固定文本。文本是逐字使用的。它主要用于基于文本的输出, 因此可以包含一些常量文本。例如,如果一个复杂的模板是创建用于文件输出,一个通常需要完成使用一个换行符,它可以通过一个常量声明介绍。template(name="outfmt" type="list") {    property(name="$!usr!msgnum")    constant(value="\n")}下面的转义序列是在常量文本中被识别:1. \\ - single backslash注意: 如果一个不之处的字符跟在一个反斜杠后面,这被视为一个错误。在这种情况下,行为是不可预测的为了避免相同的模板使用都为基本文本输出和结果, constant text  没有一个“outname” 参数会被忽略当创建一个 name/value tree 用于结构化输出。因此如果你需要提供一些constant text e.g. to mongodb,你必须包含一个outnametemplate(name="outfmt" type="list") {    property(name="$!usr!msgnum")    constant(value="\n" outname="IWantThisInMyDB")}property statement 属性声明:此语句是用于包含属性文本,它可以访问所有的属性。此外,选项允许指定选择一个属性的部分或者修改它它支持以下参数:

原创粉丝点击