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+不支持这种风格的配置


原文地址:https://www.cnblogs.com/solitarywares/p/7993954.html