<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      NLog文章系列——如何編寫(xiě)自定義的過(guò)濾器(Filter)

      作者:Jaros?aw Kowalski <jaak@jkowalski.net>

      翻譯:CrazyCoder(由衷感謝他的熱心!!)

      原文:http://www.nlog-project.org/howto_write_filter.html

      更多關(guān)于NLog的中文文章,請(qǐng)參考《NLog文章系列》。

       

      為什么要編寫(xiě)自定義過(guò)濾器?

      過(guò)濾器的作用就是減少向日志目標(biāo)輸出不需要的日志信息。NLog提供一些預(yù)定義的過(guò)濾器,這些過(guò)濾器支持大多數(shù)常用的字符串運(yùn)算符。如果這些預(yù)定義的過(guò)濾器不符合你的需求,那就自己動(dòng)手吧。

       

      怎樣編寫(xiě)?

      寫(xiě)一個(gè)過(guò)濾器并不復(fù)雜。寫(xiě)一個(gè)繼承了NLog.Filter的類并重寫(xiě)其中的Check()方法就可以了。Check()方法的返回值包括:

      1. FilterResult.Neutral – 該過(guò)濾器不想決定這個(gè)消息是否應(yīng)被記錄。其它的過(guò)濾器(如果有的話)可以進(jìn)一步檢查。
      2. FilterResult.Ignore – 這個(gè)消息不應(yīng)該被記錄。
      3. FilterResult.Log – 這個(gè)消息應(yīng)該被記錄。也不需要其它過(guò)濾器的進(jìn)一步檢查。

      通常即使一個(gè)消息符合過(guò)濾條件,也應(yīng)該讓用戶來(lái)決定這個(gè)消息是否應(yīng)當(dāng)被過(guò)濾。這種情況下如果符合過(guò)濾條件濾器都應(yīng)當(dāng)返回Result。如果過(guò)濾器要支持用戶自定義配置那么應(yīng)該返回Result或者FilterResult.Neutral

       

      例子

      這個(gè)例子里介于兩個(gè)特定時(shí)間之間記錄的日志信息會(huì)被過(guò)濾。

      csc.exe /t:library /out:MyAssembly.dll /r:NLog.dll MyFirstFilter.cs

       

      using System; 
      using System.Text; 
       
      using NLog; 
       
      namespace MyNamespace 
      { 
          [Filter("hourRange")] 
          public sealed class HourRangeFilter: Filter 
          { 
              private int _fromHour = 0; 
              private int _toHour = -1; 
               
              public int FromHour 
              { 
                  get { return _fromHour; } 
                  set { _fromHour = value; } 
                   
              } 
              public int ToHour 
              { 
                  get { return _toHour; } 
                  set { _toHour = value; } 
                   
              } 
       
              protected override FilterResult Check(LogEventInfo ev) 
              { 
                  if (ev.TimeStamp.Hour >= FromHour && ev.TimeStamp.Hour <= ToHour) 
                      return Result; 
                  else 
                      return FilterResult.Neutral; 
              } 
          } 
      }

       

      如何使用自定義過(guò)濾器

      只要把自定義過(guò)濾器所在的動(dòng)態(tài)鏈接庫(kù)引用到配置文件的<extensions />區(qū)域即可,具體做法請(qǐng)參考這里

       

      配置文件的例子

      這個(gè)配置文件設(shè)置過(guò)濾在10:00和12:59之間記錄的日志。很簡(jiǎn)單吧。

      <nlog> 
        <extensions> 
          <add assembly="MyAssembly"/> 
        </extensions> 
        <targets> 
          <target name="console" type="Console"/> 
        </targets> 
        <rules> 
          <logger name="*" minLevel="Info" appendTo="console"> 
            <filters> 
              <hourRange fromHour="10" toHour="12" action="Ignore"/> 
            </filters> 
          </logger> 
        </rules> 
      </nlog> 
       

      怎樣將配置參數(shù)傳遞給過(guò)濾器

      看一下上面的例子,“FromHour”和“ToHour”這個(gè)兩個(gè)屬性就是兩個(gè)配置參數(shù)。只需在類中聲明公有屬性來(lái)保存配置參數(shù)就可以了。過(guò)濾器配置中的每一個(gè)參數(shù)都會(huì)被傳遞給正確的公有屬性。NLog支持integer,string,datetime和boolean類型的參數(shù)并會(huì)對(duì)類型進(jìn)行自動(dòng)轉(zhuǎn)換。參數(shù)都是大小寫(xiě)敏感的。

      <filters> ... <hourRange fromHour="10" toHour="12" action="Ignore" /> ... </filters>

      這里在配置過(guò)濾器的時(shí)候FromHour的值被設(shè)為10,ToHour的值被設(shè)為12。可以使用更多的參數(shù)來(lái)傳遞更多的屬性:

      <filters> ... <hourRange p1="" p2="" p3="" p4="" pN="" action="Ignore" /> ... </filters>

       

      需要一個(gè)專門(mén)的動(dòng)態(tài)鏈接庫(kù)嗎?

      完全不必。可以調(diào)用FilterFactory.AddFilter()來(lái)通過(guò)程序注冊(cè)過(guò)濾器。不過(guò)必須保證注冊(cè)完成之前不能記錄任何日志信息。在<extensions />區(qū)域參照EXE可執(zhí)行文件是允許的。

      static void Main(string[] args) 
      { 
          FilterFactory.AddFilter("MyFirst", typeof(MyNamespace.MyFirstFilter)); 
       
          // start logging here 
      }

       

      Last updated: 2006-07-10 11:32:55

      posted on 2006-12-25 23:19  Dflying Chen  閱讀(6553)  評(píng)論(2)    收藏  舉報(bào)

      主站蜘蛛池模板: 久久婷婷丁香五月综合五| 风流老熟女一区二区三区| 色综合久久天天综线观看| 精品国产亚洲一区二区三区在线观看 | 国产超碰无码最新上传| 99中文字幕精品国产| 韩国美女福利视频一区二区| 国内综合精品午夜久久资源| 人妻夜夜爽天天爽三区丁香花| 国产性色的免费视频网站| 十八禁国产一区二区三区| 国产精品三级中文字幕| 精品人妻伦九区久久aaa片| 国产成年码av片在线观看| 国产学生裸体无遮挡免费| 夜夜爽免费888视频| 国产日韩一区二区四季| 日韩精品国产二区三区| 香港日本三级亚洲三级| 色综合色天天久久婷婷基地| 亚洲综合小综合中文字幕| 国产精品熟女一区二区三区| 国产精品v片在线观看不卡| 国产精品一码在线播放| 五月天天天综合精品无码| 国产对白熟女受不了了| 久久亚洲色www成人欧美| 国产精品福利自产拍久久| 国产偷窥熟女高潮精品视频| 成人做爰视频www| 欧美成年黄网站色视频| 日本成人午夜一区二区三区| 国产亚洲精品第一综合| 99久久婷婷国产综合精品青草漫画 | 久久96热在精品国产高清| 久久热这里只有精品99| 国产一区二区视频啪啪视频| 国产亚洲精品AA片在线爽 | 日本一区二区三区18岁| 国产人妻精品一区二区三区不卡| 亚洲 中文 欧美 日韩 在线|