NLog類庫的使用探索——認識配置+實習小感悟


1 寫在前面

1.1 為什么學了軟件

           1、高考失敗,分數不高,不能隨心所欲

           2、農村孩子,學點技術,將來有口飯吃

           3、有科技含量,想玩電腦(那個時候是這么想的,那個時候覺得學計算機就是玩電腦)

1.2 為什么選了C#

          1、大一大二學了c,C++,大三分方向NET和JAVA,覺得C,C++,C#看着好看,讀者順,就選了。

          2、大多數學習好點的學了JAVA,不想跟風選了C#

1.3  選擇決定命運

         本科時候winform,asp.net,WindowsPhone各學了半年,學的最好的還算是WP,只能說懂了一點點。有了點C#基礎,對項目什么基本沒做什么,除了一些管理系統。從此就稀里糊塗走上了NET平台。偶然機會讀了個研究生也就沒機會找工作,其實我個人覺得讀研用處不大,不過研究生遇到了一群好朋友還是挺感恩的。研究生期間打了一年英雄聯盟,因為之前沒打過游戲,就瘋狂玩了一年。然后就是找實習,可是我也就有點NET的經驗,所以只能拿這個找實習了。但我總覺得NET不受人歡迎,前途堪憂,至今如此這么認為。其實也有java相關職位,但我底氣不足,在學校也就沒簽。

1.4 說說帝都實習的感悟

    2014年7月1日無奈來到帝都找實習,其實我一點也不想來,但想了想為了掙點學費就來了。這里有本科的同學,有幾個好朋友正好工作一年,所以我來也沒受什么罪。沒有被騙,沒有因為住處費盡心思。就在朋友那住着,后來走了,不過那是后話。我自己從學校走的時候打了20份簡歷,想着20份投出去后如果還沒有找到就直接做商務或者銷售算了。自己簡歷上都是WP,Silverlight的相關經驗。就直接投的是WP職位,感覺自己做什么都無所謂,工資別太寒磣就行。安卓和IOS也投了,雖然沒經驗沒基礎,我感覺學會應該也不難。主要投的是WP職位,C#工程師職位這兩個職位。面試電話平均每天兩個,大部分都是中小公司,甚至還有十個以下的公司。但是只要給我打電話了,無論多遠我都去面試和多不想去,覺得這是一份尊重吧。面試過程就不說了,越小的公司越給你搞得想死的感覺,覺得你沒經驗等等。大點的公司到是對人挺尊重的,給人一種溫暖的感覺。都是程序員,相煎何太急!!

     找工作期間,擠地鐵,擠公交,心里總是沉沉的,覺得帝都一點也沒有給我帶來興奮的感覺。這就是幸福感不行吧。扯遠了。拿着一點WP的經驗和對編程的熱情,有時候熱情還真能當飯吃。一周面試了八家,一共三個offer。其中兩個都是五千以下的,WP職位。工資低的原因告訴我說,因為你沒畢業證,不能按照你的理想薪資來。我其實蠻想做移動開發的。但是這工資在北京太寒磣。第三個offer是C#工程師,工資高點,辦公環境好點。但是缺點是沒人帶,就一個C#工程師,主要職責是WPF,WindowsPhone,Windows8。。。。。說白了,只要是與NET相關的都是你的。為了給父母減輕負擔,我還是選擇了工資好點的,雖然感覺對自己發展有點不好。不知道選擇是否正確,各位看官怎么看?這一學估計以后就是NET,畢業想換方向就難了。沒人帶,遇到問題自己解決,沒人討論,沒人說話,這種日子,哎,安靜!!!不管怎么說畢竟是第一份工作,畢竟是”初戀“,我也就盡心盡力,生怕對不住公司給發的工資。一個月學了學WPF覺得難點對我來說是界面(呵呵,公司沒有會Blend的設計師,沒辦法,自己有沒有藝術細胞)。現在沒什么項目任務,索性就研究下公司現有成熟項目的源碼,也再溫習一下WPF知識。學習過程中遇到沒用過的就仔細研究研究,我想這樣成長是不是更快點。有什么建議希望看官也能給我提提。有時候一直在徘徊,編程這條路還能走多久?畢業后要不要繼續走這條路?這也許真的很難回答。

    下面是今天看公司源碼涉及到寫日志的問題,項目用了一個NLog的類庫,以前沒用過,就學習了下。沒興趣的跳過得了,沒看過的可以了解下。

2 進入正題

2.1 定義

     官方定義:NLog is a free logging platform for .NET, Silverlight and Windows Phone with rich log routing and management capabilities. It makes it easy to produce and manage high-quality logs for your application regardless of its size or complexity. 簡單的來說NLog就是一個開源的日志管理平台,支持.net,Silverlight,Windows Phone。有着豐富的路由和管理功能。能夠很容易的生成和管理你的項目日志。

NLog is an open source project hosted on GitHub and source code is available under the terms of BSD license. //在GitHub可以下到源碼,源碼是基於BSD License的

Binary packages are available via NuGet. //可以通過NuGet將類庫直接導入到項目中去

驗的“新生”來說。苦逼的是

2.2 NLog的特性

          簡單的來說NLog能夠導出基於.NET語言的(C#,VB)所有的診斷信息。通過數據上下文(contextual information,包含了發生時間,線程,進程,嚴重程度等)來格式化你想要導出的信息,打出到哪里呢?Nlog提供了導出目標(targets 文本、數據庫、Email、控制台等)

2.3 配置實用

          very easy to configure, both through configuration file and programmatically。官方文檔中這句算是最重要的了,通過它展示了如何應用到自己的項目中去。提供了兩種方式:配置文件和后台編程都可以。

      以上相關鏈接,給出了向文件,遠程日志,數據庫,郵箱等為目標的日志輸出相關例子,用時查閱即可。下面結合項目實例,簡單了解下最簡單的使用過程。

3、項目實例

3.1 輸出目標為控制台的小例子

          第一步:通過NetGet導入類庫dll。

imageimage

       第二步:打開配置文件NLog.config

      第三步:定義導出目標和輸出哪些信息

       添加目標,並指定輸出的布局,也就是說我們想把項目日志輸出到哪里,輸出的格式是什么?

   <target xsi:type="Console" name="Conso"  
                        layout="${longdate} ${uppercase:${level}} ${message}" />

      layout是固定格式,${}是語法格式,這里分別輸出的信息分別為:時間,級別,信息

     第四步:定義輸出規則

     我們到底要輸出哪些信息到日志文件中去,這就涉及到了記錄等級的問題。

    記錄等級(log level)信息,用來描述該條信息的重要性。NLog支持如下幾種記錄等級:

  1. Trace - 最常見的記錄信息,一般用於普通輸出
  2. Debug - 同樣是記錄信息,不過出現的頻率要比Trace少一些,一般用來調試程序
  3. Info - 信息類型的消息
  4. Warn - 警告信息,一般用於比較重要的場合
  5. Error - 錯誤信息
  6. Fatal - 致命異常信息。一般來講,發生致命異常之后程序將無法繼續執行。

     這個小例子,我們把輸出等級設為等級等於或高於Debug等級的信息輸出至控制台

<logger name="*" minlevel="Debug" writeTo="Conso"></logger>  這句話很明了但需要說明的是write to屬性應該是target的名字。意思是寫到輸出目標里面。

    第五步:創建logger對像,若希望生成並輸出診斷信息,我們還需要添加一個Logger對象。Logger對象的方法名和記錄等級的名稱一樣(Debug()、Info()、Fatal()……)。Logger對象是通過LogManager對象創建的。建議Logger對象的名稱和程序的類名保持一致。調用LogManager的GetCurrentClassLogger()方法即可自動為當前類創建一個Logger對象。后台代碼如下:

using NLog;
namespace WpfApplication4
{
    /// <summary>
    /// MainWindow.xaml 的交互邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        public static Logger mainwindowLogger = LogManager.GetCurrentClassLogger();//該Logger對象代表與當前類相關聯的日志消息的來源。 
        public MainWindow()
        {
            InitializeComponent();
            mainwindowLogger.Debug("模擬一條Debug級別的信息");//發出一條Debug記錄等級的診斷信息。
        }
    }
}

image

通過以上幾步,應該基本了解了Nlog的工作流程。配置文件中配置輸出目標,要輸出哪些診斷信息(layout),並定義輸出規則,什么等級的信息輸出。應用程序后台代碼中使用logger對象定義輸出的診斷信息。

3.2 進一步的擴展這個例子

          我們新增加一個需求,如果同時輸出到一個文件呢?該如何做?這也不難,需要修改配置文件就行。添加一個target即可。

          image

         image

        兩幅圖已經很說明問題,不再詳細描述。

4、小結

              零零散散寫了個簡單的例子,只供像我這種入門級別的人看看罷了,下一篇,繼續深入探討NLog。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM