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

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

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

      NLog文章系列——入門教程(下)

       

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

      翻譯:Dflying Chen:http://dflying.cnblogs.com/

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

      本文為《NLog文章系列》的第四篇,即入門教程的最后一篇。將繼續描述演示用NLog書寫日志的方法。

       

      自動重新配置

      NLog的配置文件將在程序啟動之后自動加載。對于某些將長時間運行的進程(例如Windows服務或ASP.NET應用程)來說,往往需要在程序運行當中臨時性地提高記錄等級,而這時我們卻并不希望重新啟動該應用程序。NLog可以自動跟蹤其配置文件的變化,一旦配置文件被修改,NLog將立即自動重新加載。我們可以通過在配置文件中設置<nlog autoReload="true" />來實現該需求。這種自動重新配置功能也會應用到被包含的文件上,也就是說若包含文件發生了變化,NLog同樣將自動重新加載整個的配置文件。

       

      日志功能排錯

      雖然已經配置好了NLog,可是有些時候應用程序仍舊會出現一些難以理解的問題,例如沒有任何日志輸出。其中最常見的原因就是ASP.NET的權限——ASP.NET的aspnet_wp.exe或w3wp.exe可能沒有對NLog配置文件中指定目錄的寫入權限。NLog對于其自身運行中發生的異常有著很強的監測能力。如下設定可以將這些監測結果輸出至指定位置,或是對這些異常進行相應的處理(默認設定將忽略自身異常):

      • <nlog throwExceptions="true" />- 當NLog自身擲出異常時,該選項可以將異常擲回日志的調用者。在開發過程中,這個設定將變得非常有用,能夠迅速幫助我們定位異常的位置以及原因。而當程序開發結束并部署到應用環境時,應該盡快設定throwExceptions為false,免得NLog自身的異常導致整個應用程序的崩潰。
      • <nlog internalLogFile="file.txt" />- 讓NLog將自身運行過程中的日志信息(包括可能出現的異常)寫入到文件中。
      • <nlog internalLogLevel="Trace|Debug|Info|Warn|Error|Fatal" /> - 選擇寫入內部日志的記錄等級。該等級設定的越高,相應的輸出日志文件將越小。
      • <nlog internalLogToConsole="false|true" /> - 將內部日志信息發送至控制臺。
      • <nlog internalLogToConsoleError="false|true" /> - 將內部日志信息發送至標準異常輸出(stderr)。

       

      異步處理、包裝器(Warpper)以及復合輸出目標

      NLog的包裝器和復合輸出目標特性讓我們能夠修改輸出目標的默認行為,這種修改體現在如下幾個方面:

      • 異步處理(向目標輸出將用單獨的線程處理)
      • 異常時自動重試
      • 負載平衡
      • 緩存 
      • 過濾 
      • 備用輸出目標(主輸出目標失敗時啟用備用輸出目標)
      • 其他,請參考http://www.nlog-project.org/targets.html

      只要在配置文件中將若干個target節點嵌套起來,即可完成對包裝器或復合輸出目標的定義。嵌套深度沒有任何限制。例如為某個輸出目標添加異步處理以及異常自動重試功能,只要按照如下代碼配置NLog即可:

      <targets> 
        <target name="n" xsi:type="AsyncWrapper"> 
          <target xsi:type="RetryingWrapper"> 
            <target xsi:type="File" fileName="${file}.txt"/> 
          </target> 
        </target> 
      </targets> 

      異步處理特性極為常用,因此NLog提供了一種簡寫方式——即<targets async="true" />,這樣該輸出目標將自動應用AsyncWrapper包裝器。

       

      以編程方式進行配置

      某些情況下我們可能不愿用配置文件來配置NLog,而是選擇使用NLog的配置API進行。對這些API的詳細介紹已經超過了本文的范圍,所以我們這里僅僅簡單介紹一些。若希望以編程的方式對NLog進行配置,我們需要:

      1. 創建一個LoggingConfiguration對象,用來保存配置信息
      2. 至少創建一個輸出目標對象
      3. 設置該輸出目標對象的屬性
      4. 設置LoggingRule對象,并將其添加到LoggingConfiguration對象的LoggingRules集合中
      5. 啟用該LoggingConfiguration對象(將LogManager.Configuration設定為該LoggingConfiguration對象即可)

      下面的代碼片段以編程方式創建了兩個輸出目標對象——支持顏色的控制臺和文件,并將記錄等級等于或高于Debug的日志信息發送至這兩個輸出目標:

      using NLog; 
      using NLog.Targets; 
      using NLog.Config; 
      using NLog.Win32.Targets; 
       
      class Example 
      { 
          static void Main(string[] args) 
          { 
              // Step 1. Create configuration object 
               
              LoggingConfiguration config = new LoggingConfiguration(); 
               
              // Step 2. Create targets and add them to the configuration 
       
              ColoredConsoleTarget consoleTarget = new ColoredConsoleTarget(); 
              config.AddTarget("console", consoleTarget); 
               
              FileTarget fileTarget = new FileTarget(); 
              config.AddTarget("file", fileTarget); 
               
              // Step 3. Set target properties 
               
              consoleTarget.Layout = "${date:format=HH\\:MM\\:ss} ${logger} ${message}"; 
              fileTarget.FileName = "${basedir}/file.txt"; 
              fileTarget.Layout = "${message}"; 
               
              // Step 4. Define rules 
               
              LoggingRule rule1 = new LoggingRule("*", LogLevel.Debug, consoleTarget); 
              config.LoggingRules.Add(rule1); 
       
              LoggingRule rule2 = new LoggingRule("*", LogLevel.Debug, fileTarget); 
              config.LoggingRules.Add(rule2); 
               
              // Step 5. Activate the configuration 
       
              LogManager.Configuration = config; 
               
              // Example usage 
       
              Logger logger = LogManager.GetLogger("Example"); 
              logger.Trace("trace log message"); 
              logger.Debug("debug log message"); 
              logger.Info("info log message"); 
              logger.Warn("warn log message"); 
              logger.Error("error log message"); 
              logger.Fatal("fatal log message"); 
          } 
      }

       

      NLog還能干點兒啥?

      NLog supports some more logging scenarios, which couldn't be fully described here. See the links below for more information:

      除此之外,NLog還支持一些更加復雜的需要日志記錄的場景。限于篇幅,這里無法一一列出,若你對其感興趣,可以參考如下鏈接:

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

       

      譯注and后記

      CrazyCoder朋友將加入到NLog文檔的翻譯過程中,他目前已經完成了對NLog配置文件這一節的翻譯,不日即將發布。我非常感謝CrazyCoder的無私奉獻精神!

      由于某些原因,這一段時間我又會忙起來了…………可能不會如這一個月一樣這樣頻繁地更新這個Blog,當然對于留言,我仍會盡量及時答復的。十分感謝朋友們一貫的支持!

      雖然很不情愿,但是很有可能這個《NLog文章系列》也沒辦法繼續寫下去了……我真的非常希望有熱心的朋友可以參與進來,既可以幫助開源社區的發展,也可以學習到新的知識,與朋友們進行交流,更能夠順便提高自己的英文能力。

      如果你愿意奉獻出自己的一點點時間,參與《NLog文章系列》的翻譯,煩請你和我聯系。參與翻譯之后,如果你有能力且愿意的話,我也十分愿意盡自己微薄之力,幫你和出版社聯系并翻譯出版真正的圖書。

      posted on 2006-12-07 22:11  Dflying Chen  閱讀(11172)  評論(6)    收藏  舉報

      主站蜘蛛池模板: 桑植县| 最近2019中文字幕免费看| 一本一本久久aa综合精品| 亚洲啪啪精品一区二区的| 粉嫩国产av一区二区三区| 丰满的女邻居2| 丁香五月婷激情综合第九色| 一个人免费观看WWW在线视频| 无码一区二区三区AV免费| 狠狠亚洲色一日本高清色| 午夜福利国产精品小视频| 亚洲老妇女一区二区三区| 老司机午夜福利视频| 精品久久人人妻人人做精品| 亚洲高清国产拍精品熟女| 性色在线视频精品| julia无码中文字幕一区| 欧美日韩在线亚洲二区综二| 国内精品国产三级国产a久久| 制服丝袜美腿一区二区| 国产成人无码A区在线观看视频| 亚洲制服无码一区二区三区| 林西县| 国语精品国内自产视频| 亚洲成年轻人电影网站WWW| 女人被狂躁的高潮免费视频| 黑人好猛厉害爽受不了好大撑| 一区二区三区精品不卡| 色老板精品视频在线观看| 人人玩人人添人人澡超碰| 精品国产一区二区三区久| 国产区二区三区在线观看| 最近中文字幕免费手机版| 亚洲av高清一区二区| 无码中文字幕人妻在线一区| 成A人片亚洲日本久久| 精品国产中文字幕第一页| 久久这里只精品国产2| 国产亚洲欧洲av综合一区二区三区| 中文字幕日韩有码第一页| 亚洲欧美日韩精品成人|