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

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

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

      NLog文章系列——如何寫自定義布局生成器(Layout Renderer)

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

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

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

      更多關于NLog的中文文章,請參考《NLog文章系列》。

       

      為什么需要寫自定義布局生成器?

      布局生成器能夠輸出程序的環境信息,因此能夠記錄更加豐富的調試信息。NLog為一些最常用的任務(如輸出環境變量、注冊表、線程id、程序根目錄等)設計了布局生成器。不過由于應用程序和框架各不相同,還是有必要開發自定義的布局生成器。

       

      如何寫

      只需要建立一個繼承自NLog.LayoutRenderer的類并重載Append()方法,在該方法中調用ApplyPadding(),這樣就可以得到按照已有布局生成器生成的格式化文本并送給產生最終輸出的StringBuilder

       

      例子

      下面是一個輸出當前小時時間的布局生成器的框架代碼。編譯命令為:

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

       

      using System; 
      using System.Text; 
       
      using NLog; 
       
      namespace MyNamespace 
      { 
          [LayoutRenderer("hour")] 
          public sealed class HourLayoutRenderer: LayoutRenderer 
          { 
              private bool _showMinutes = false; 
               
              // 一個配置參數的示例
              public bool ShowMinutes 
              { 
                  get { return _showMinutes; } 
                  set { _showMinutes = value; } 
                   
              } 
              protected override int GetEstimatedBufferSize(LogEventInfo ev) 
              { 
                  // 最多需要兩位字符表示小時數 
                  // 返回本布局生成器需要的緩沖區數 
                  return 2; 
              } 
       
              protected override void Append(StringBuilder builder, LogEventInfo ev) 
              { 
                  // 得到當前的小時或分鐘數并轉為字符串,格式化 
                  // 最終添加給指定的StringBuilder 
                  if (ShowMinutes) 
                  { 
                      builder.Append(ApplyPadding(DateTime.Now.Minute.ToString())); 
                  } 
                  else 
                  { 
                      builder.Append(ApplyPadding(DateTime.Now.Hour.ToString())); 
                  } 
              } 
          } 
      }

       

       

      如何使用自定義布局生成器

      把生成器編譯到一個動態鏈接庫并在配置文件的<extensions />區域中引用它,具體用法請參考這里

       

      配置文件的例子

      下面的例子能夠在所有日志之前加上系統當前的小時信息。的確很簡單吧?

       

      <nlog> 
        <extensions> 
          <add assembly="MyAssembly"/> 
        </extensions> 
        <targets> 
          <target name="console" type="Console" 
                  layout="${hour:showminutes=false} ${message}"/> 
        </targets> 
        <rules> 
          <logger name="*" minLevel="Info" appendTo="console"/> 
        </rules> 
      </nlog> 

       

      如何傳遞配置參數

      看一下上面的例子,“ShowMinutes”這個屬性就是一個配置參數。只需在類中聲明公有屬性來保存配置參數就可以了。參數中間以以冒號分隔,如:

      ${hour:showminutes=true}

      這樣在加載配置信息時就會把ShowMinutes屬性的值設置為true。傳遞多個參數值需要用冒號逐一分開:

      ${layoutrenderername:par1=value1:par2=value2:par3=value3:...:parN=valueN}

      NLog支持integer,string,datetime和boolean類型的參數并會對類型進行自動轉換。

       

      必須要放在新的動態鏈接庫里嗎?

      完全不需要。你可以在程序中調用LayoutRendererFactory.AddLayoutRenderer()方法注冊你的布局生成器。不過必須保證注冊完成之前不能記錄任何日志信息。在<extensions />區域參照EXE可執行文件是允許的。

      static void Main(string[] args) 
      { 
          LayoutRendererFactory.AddLayoutRenderer("hour", typeof(MyNamespace.MyFirstLayoutRenderer)); 
       
          // start logging here 
      }

       

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

      posted on 2006-12-22 23:36  Dflying Chen  閱讀(8002)  評論(8)    收藏  舉報

      主站蜘蛛池模板: 激情97综合亚洲色婷婷五| 色五开心五月五月深深爱| 亚洲中文字幕无码久久2017| 国产av一区二区亚洲精品| 国内不卡一区二区三区| 亚洲中文字幕亚洲中文精| 亚洲国产成人综合精品| 午夜福利片1000无码免费| 99久久国产精品无码| 国产在线午夜不卡精品影院| av午夜久久蜜桃传媒软件| 久久96热在精品国产高清| 欧美性猛交xxxx乱大交丰满| 无码av人片在线观看天堂| 丝袜美腿亚洲综合第一页| 玖玖在线精品免费视频| 成人特黄A级毛片免费视频| 白丝乳交内射一二三区| 亚洲精品国产福利一区二区| 又爽又黄又无遮挡的激情视频| 粗大的内捧猛烈进出小视频| 国产精品国产亚洲区久久| 亚洲区一区二区三区精品| 午夜一区二区三区视频| 成人动漫综合网| 日韩成人高精品一区二区| 久久人人97超碰精品| 丰满的女邻居2| 中文字幕人妻中出制服诱惑| 91午夜福利一区二区三区 | 达孜县| 99国产午夜福利在线观看| 中文字幕在线精品国产| 国产精品一区在线蜜臀| 亚洲国产精品色一区二区| 精品素人AV无码不卡在线观看| 精品婷婷色一区二区三区| 日韩人妻无码精品久久| 国产999久久高清免费观看| 亚洲av专区一区| 99re视频在线|