zoukankan      html  css  js  c++  java
  • Filter Conditions

    Filter Conditions


    Rsyslog提供四种不同类型的条件过滤

       1、基于传统的严格或灵活的过滤器
       2、基于属性的过滤器
       3、基于表达式的过滤器
       4、bsd风格的过滤器


    Selectors(选择器)  

      选择器是过滤系统日志消息的传统方式,他们已经和原来的保持rsyslog语法。selector字段本身包含两个部分,facility和priority,二者被句号分隔,这两个部分不区分大小写
      facility的关键字如下:
        auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (same as auth), syslog, user, uucp and local0 through local7
      priority的关键字如下,升序排列:
        debug, info, notice, warning, warn, err, error, crit, alert, emerg, panic
      使用分隔符(;)为单个动作指定多个选择器, 请记住,选择器字段中的每个选择器都能够覆盖前面的(在前的)选择器。使用此行为,可以从模式中排除(排除)一些优先级。


    Property-Based Filters

      对于rsyslogd来说Property-based是独特的,允许过滤任何属性如HOSTNAME, syslogtag and msg等。
      一个基于属性过滤器必须以冒号0列开始,冒号必须跟着属性名称逗号,执行比较操作的名称,另一个逗号,然后比较的值。这个值必须被引用。逗号之间可以有空格和制表符。
      示例:
        :property, [!]compare-operation, "value"

      Compare-Operations支持以下参数:

        contains:检查值中包含的字符串是否包含在属性中。必须有完全匹配,不支持通配符(通配符)。
        isequal:比较提供的"值"字符串和属性内容。 这两个值必须完全相等。
        startswith:检查值是否刚好在属性值的开始处找到。
        regex:将该属性与提供的POSIX BRE正则表达式进行比较。
        ereregex:同上
          你可以在比较操作之前立即使用bang-character(!),这个操作的结果是否定的。
          例如,如果msg包含"This is a informative message",下面的示例将不匹配:
            :msg, contains, "error"
            :msg, !contains, "error"
        示例:

            *.* /var/log/allmsgs-including-informational.log
            :msg, contains, "informational"  ~
            *.* /var/log/allmsgs-but-informational.log

        释义:不要忽略第2行的波浪字符! 在这个例子中,所有的消息都被写入文件allmsgs-including-informational.log。
        然后,包含字符串"informational"的所有消息都将被丢弃。 这意味着"丢弃行"下方的配置文件行我们示例中的编号2)将不会应用于此消息。 然后,所有剩余的行也将写入文件allmsgs-but-informational.log。

      Value Part:

         值是一个带引号的字符串。 它支持一些转义序列:

          " - the quote character (e.g. "String with "Quotes"")
          \ - the backslash(反斜杠) character (e.g. "C:\tmp")
        示例:
          :msg, contains, "ID-4711" #注意大小写敏感
          :msg, regex, "fatal .* error" #使用POSIX正则表达式


    Expression-Based Filters

    基于表达式的过滤器允许过滤任意的(任意的)复杂表达式,其中可以包括布尔值,算术和字符串操作。 表达式过滤器将演变成完整的配置脚本语言。
    示例:

      if expr then action-part-of-selector-line
      #"if" and "then"是固定格式,expr是一个表达式,action-part-of-selector-line是一个action。


    BSD-style Blocks

      rsyslog v7+不支持这种风格的配置


  • 相关阅读:
    C#.NET 超大文件上传和断点续传的实现
    Linux下arp用法
    daf简记
    Linux route命令详解和使用示例(查看和操作IP路由表)
    CMake使用之一
    Crontab的格式
    linux 单网卡绑定两个ip
    云计算与虚拟化以及IaaS, PaaS和SaaS
    shell中判断用法
    解决screen Cannot open your terminal '/dev/pts/1'问题
  • 原文地址:https://www.cnblogs.com/solitarywares/p/7993954.html
Copyright © 2011-2022 走看看