zoukankan      html  css  js  c++  java
  • Filter Conditions 过滤条件

    Filter Conditions  过滤条件
    
    
    Rsyslog 提供4种不同类型的"过滤条件"
    
    1."传统" severity and facility 基于选择器
    
    2.基于属性的过滤器
    
    3.表达式过滤器
    
    4.BSD-style blocks (not upward compatible) 不向上兼容
    
    Selectors 选择器
    
    Selectors  是传统的方式过滤syslog 消息,他们被保存在rsyslog的原始的语法里,
    
    
    因为那是众所周知的,高效的 也兼容stock syslogd配置文件。
    
    
    如果你只是需要基于 priority and facility进行过滤, 你需要使用selector lines
    
    
    selector 本身有2部分组成,a facility and a priority,通过一个句号(".")隔开
    
    这两部分都是不区分大小写的,也可以指定为十进制数字,但不要这样做
    
    
    facility 是下面关键字中一个: auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (same as auth), syslog, user, uucp and local0 through local7. 
    
    
    关键字安全不应该被使用 标记只用于内部使用,因此不应该在应用中使用
    
    
    
    priority  是下面关键词之一,ebug, info, notice, warning, warn (same as warning), err, error (same as err), crit, alert, emerg, panic (same as emerg).
    
    
    关键词 error,warn和panic 是过时的 不能再被使用
    
    
    原始的BSD syslogd 的行为是所有指定的priority 和更高的消息是被记录根据给定的action.
    
    
    除了以上提到的rsyslogd(8) 了解下面的扩展名
    
    一个星号("*") 代表所有的facilities 或者所有的priorities
    
    取决于它是用在哪里(之前还是之后).
    
    
    关键词none 表示对于给定的facility 没有优先级。
    
    你可以指定多个设备使用相同的优先级模式在一个语句使用逗号分隔
    
    多重选择器 可能被指定用于一个单独的action 使用;分隔。
    
    记住每个selector 在selector 字段你是可以重写前面那个。
    
    
    Compare-Operations  比较操作:
    
    
    下面的compare-operations 是当前被支持的;
    
    contains
    
    检查如果 字符串提供值是包含在属性中,这必须是一个精确匹配,通配符是不支持的
    
    isequal
    
    比较提供的值和属性内容, 那两个值必须是准备的匹配。
    
    不同于包含是 包含搜索 值任何地方在属性值里,
    
    比如:
    
    isequal 是很有用的对于字段 像syslogtag 或者FROMHOST,你知道确切的内容
    
    
    startwith:
    
    检查如果值是准备找到的在属性值得部分,比如,如果你搜索val
    
    :msg, startswith, "val"
    
    它会匹配如果消息包含"“values are in this message”
    
    但是不会匹配 如果消息包含"“There are values in this message” (这种情况 "contains"会匹配)
    
    请注意 "startwith"是比正则快
    
    
    regex  比较属性通过提佛那个的POSIX BRE 正则表达式
    
    你可以使用 ! 在一个比较操作符前面  这样操作的结果是相反的。
    
    比如,如果 msg 包含"This is an informative message”, 下面的例子不会匹配:
    
    :msg, contains, "error"
    
    
    但是这个会匹配:
    
    :msg, !contains, "error"
    
    
    
    使用 !可以有用的 如果你想要做一些特定的处理 但是排除一些特定的事件。
    
    你可以使用discard action 
    
    *.* /var/log/allmsgs-including-informational.log
    :msg, contains, "informational"  ~
    *.* /var/log/allmsgs-but-informational.log
    
    
    值部分:
    
    值是引用字符串,它支持一些转义序列"
    
    
    ” - the quote character (e.g. “String with ”Quotes””)
        \ - the backslash character (e.g. “C:\tmp”) 
    
    
    转义字符总是以一个开始, 额外的转移序列可能在未来增加。
    
    
    可能,"msg" 是最突出的使用例子 基于过滤器。
    
    它实际上是消息文本,它可以过滤基于一些消息内容的
    
    :msg, contains, "ID-4711"
    
    这个过滤器 匹配当消息包含字符串"ID-4711"
    
    注意 comparison 是区分大小写的,因此他不会匹配如果  “id-4711” 
    
    
    :msg, regex, "fatal .* error"
    
    
    
    这个过滤器使用一个POSIX 正则表达式,它匹配当字符串包含 字符"fatal" 和 “error” 和任何其他在两者之间
    
    比如( “fatal net error” and “fatal lib error” but not “fatal error” 
    
    
    
    基于表达式的过滤器:
    

  • 相关阅读:
    yum命令速查
    5分钟理解编译系统
    Nginx(一)安装及启停
    Linux时间命令
    常用七种排序的python实现
    python迭代器、生成器、装饰器
    LeetCode【第217题】Contains Duplicate
    LeetCode【第1题】Two Sum
    python【第二十篇】Django表的多对多、Ajax
    不要问我DO在哪里?
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349881.html
Copyright © 2011-2022 走看看