• Templates 模板:


    Templates 模板:
    
    
    模板是rsyslog的关键特征,它们允许指定用户需要的任何格式。
    
    它们也用于动态文件名生成。
    
    $EscapeControlCharactersOnReceive off
    $template tocFormat,"%fromhost-ip%,%$!metadata!filename%,%msg%
    "
    
    
    ######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="
    ")
        }
    
    
    这个例子是主要针对基于文件的输出
    
    constant statement 常量声明:
    
    这个提供一种方式指定固定文本。文本是逐字使用的。
    
    它主要用于基于文本的输出, 因此可以包含一些常量文本。
    
    例如,如果一个复杂的模板是创建用于文件输出,一个通常需要完成使用一个换行符,
    
    
    它可以通过一个常量声明介绍。
    
    template(name="outfmt" type="list") {
        property(name="$!usr!msgnum")
        constant(value="
    ")
    }
    
    
    下面的转义序列是在常量文本中被识别:
    
    1. \ - single backslash
    
    
    
    注意: 如果一个不之处的字符跟在一个反斜杠后面,这被视为一个错误。在这种情况下,行为是不可预测的
    
    为了避免相同的模板使用都为基本文本输出和结果, 
    
    constant text  没有一个“outname” 参数会被忽略当创建一个 name/value tree 用于结构化输出。
    
    因此如果你需要提供一些constant text e.g. to mongodb,你必须包含一个outname
    
    template(name="outfmt" type="list") {
        property(name="$!usr!msgnum")
        constant(value="
    " outname="IWantThisInMyDB")
    }
    
    property statement 属性声明:
    
    
    此语句是用于包含属性文本,它可以访问所有的属性。此外,选项允许指定选择一个属性的部分或者修改它
    
    它支持以下参数:
    

  • 相关阅读:
    μTorrent for Windows
    坚决抵制Rarbg的恶意修改版
    Check YouTube Video Restrictions Online
    Questions about "Computer Systems: A Programmer's Perspective"
    los diccionarios que te acercan al mundo
    sqlserver 备份数据库 按时间命名备份文件
    Linux中的硬链接和软链接的概念、区别及用法
    高恪固件端口映射怎么配置
    C++中的DLL,Delphi调用需要注意之一
    Delphi中主线程与子线程调用同一方法同步问题
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349641.html
Copyright © 2020-2023  润新知