<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 22, 文章 - 0, 評論 - 1, 引用 - 0
    數據加載中……

    logback_doc_manual_07_filters

    http://logback.qos.ch/manual/filters.html
    logback-classic有兩種filter:Regular filters和turbo filters,掛在appender上
    Regular filters
         只有一個decide()方法,返回DENY, NEUTRAL or ACCEPT
    LevelFilter
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
          <level>INFO</level>
          <onMatch>ACCEPT</onMatch>
          <onMismatch>DENY</onMismatch>
         </filter>
    ThresholdFilter
         高于或等于指定日志級別的記錄,會返回NEUTRAL
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
          <level>INFO</level>
         </filter>     
    EvaluatorFilter
         EventEvaluator的實現判斷某個條件是否滿足。
         
         GEventEvaluator
              接受groovy語法的布爾表達式作為判斷條件,需要依賴Groovy運行時,表達式語句在配置的時候完成編譯。
              logback會自動將目標事件作為一個變量傳進來,可以用“event”或者“e”來引用。
              TRACE, DEBUG, INFO, WARN and ERROR這些級別也引入了,所以可以這樣判斷相等: "event.level == DEBUG" 。
              其他比較符,大于小于,需要轉換成int再比較。
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">      
          <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator"> 
            <expression>
               e.level.toInt() >= WARN.toInt() &amp;&amp;  <!-- Stands for && in XML -->
               !(e.mdc?.get("req.userAgent") =~ /Googlebot|msnbot|Yahoo/ )
            </expression>
          </evaluator>
          <OnMismatch>DENY</OnMismatch>
          <OnMatch>NEUTRAL</OnMatch>
        </filter>
         JaninoEventEvaluator
              使用java表達式,使用上比基于groovy的GEventEvaluator繁瑣,但執行速度更快。
              詳情略。
              
    Matchers
         執行上面的過濾器時,可以調用String.matches()方法,但代價是每次需要重編譯一個正則Pattern對象。
         所以可以預先定義和編譯一個,以便復用。
         詳情略。
    TurboFilters
         跟普通過濾器功能一樣,但是:
              1,TurboFilter是跟logging context關聯的,而不是跟appender關聯。作用域更大。不僅在指定appender使用時,而且在每次logging請求時都會被調用。
              2,他們是在LoggingEvent對象創建之前被調用,過濾時不需要event實例做參數,所以性能更高(因為在event創建之前就已經執行過濾了)。
         內置了一些TurboFilter:
              MDCFilter     測試指定的值是否存在于MDC中
              DynamicThresholdFilter     基于MDC的key和level來限流
              MarkerFilter     測試指定的marker是否出現在請求中
              DuplicateMessageFilter
                   自動過濾相同的消息。
                        使用簡單的字符串比對——即使兩個字符串基本相同,相差一兩個字母:也會被認為不同。
                        僅比較raw字符串,用{}轉義過的字符串不去比較。
                        可以通過AllowedRepetitions設置允許的重復上限,超過上限的會被拋棄。默認大小為5
                        需要通過一個內部cache來保存老的消息以便判斷,可以通過CacheSize設置緩存大小,默認100.
              
    在evaluator的expression里,將logging時間與項目啟動時間對比,可以控制僅輸出“項目啟動后20秒內的某類型日志”——這個對于“確認某個定時任務在啟動時是運行狀態”很有用,例如:
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
      <evaluator name="loggingTaskEval">
        <expression>
          logger.getName().contains("LoggingTask") &amp;&amp;
          message.contains("Howdydy-diddly-ho") &amp;&amp;
          (timeStamp - event.getStartTime()) >= 20000
        </expression>
      </evaluator>
      <OnMatch>DENY</OnMatch>
    </filter>

    posted on 2014-07-13 18:59 王星游 閱讀(418) 評論(0)  編輯  收藏 所屬分類: java

    主站蜘蛛池模板: a级大片免费观看| 亚洲国产模特在线播放| 国产成人啪精品视频免费网| 国产精品免费看香蕉| 亚洲jizzjizz少妇| 男女一边摸一边做爽的免费视频 | 亚洲国产成人私人影院| 67pao强力打造67194在线午夜亚洲 | 久久精品视频亚洲| 亚洲人成网站18禁止| 最近免费字幕中文大全| 亚洲啪啪综合AV一区| 中国china体内裑精亚洲日本| 农村寡妇一级毛片免费看视频 | 国产人在线成免费视频| 免费真实播放国产乱子伦| 99人中文字幕亚洲区| 一级毛片**免费看试看20分钟| 99视频全部免费精品全部四虎| 国产亚洲精品激情都市| 亚洲最大的黄色网| 午夜影院免费观看| 暖暖免费高清日本中文| 亚洲最大在线观看| 久久免费国产精品一区二区| 免费国产成人高清在线观看麻豆| 亚洲六月丁香六月婷婷色伊人| 手机在线免费视频| 亚洲另类激情综合偷自拍| 无码精品A∨在线观看免费| 亚洲高清一区二区三区电影| 久久久久亚洲?V成人无码| 久久久久免费看成人影片| 成人免费AA片在线观看| 久久精品国产亚洲AV麻豆网站| 男女做羞羞的事视频免费观看无遮挡| 国产精品亚洲а∨无码播放麻豆| 69视频免费观看l| 国产亚洲视频在线观看| 亚洲AV无码久久精品蜜桃| 成人免费无码视频在线网站|