當前位置:
首頁 > 最新 > 淺談Log4net在項目中如何記錄日誌

淺談Log4net在項目中如何記錄日誌

一 引入背景

在軟體開發周期中,無論是開發中,或是測試中,或是上線後,選擇合適的工具監控程序的運行狀態至關重要,只有如此,才能更好地排查程序問題和檢測程序性能問題等。本篇文章主要與大家分享,如何利用Log4net在項目中記錄日誌文件。在應用程序出現問題時,啟用日誌記錄有助於解決問題。使用log4net,可以在運行時啟用日誌記錄,而無需修改應用程序二進位文件。log4net是幫助程序員輸出日誌語句到各種輸出目標的工具。

log4net支持如下框架:

NET Standard 1.3 via .NET Core 1.0

Microsoft? .NET Framework 1.0

Microsoft .NET Framework 1.1

Microsoft .NET Framework 2.0

Microsoft .NET Framework 3.5

Microsoft .NET Framework 4.0

Microsoft .NET Framework 4.5

Microsoft .NET Framework 3.5 Client Profile

Microsoft .NET Framework 4.0 Client Profile

Microsoft .NET Compact Framework 1.0

Microsoft .NET Compact Framework 2.0

Mono 1.0

Mono 2.0

Mono 3.5

Mono 4.0

Microsoft Shared Source CLI 1.0

CLI 1.0 Compatible

二 log4net概述

(一)日誌級別

1.級別歸納

2.級別比較

(1)級別從低=>高排序:ALL

(2)日誌不能記錄低於最低級別的記錄,如設置最低級別為Info,則低於Info的級別,都不能記錄

code

測試結果

3.利用Filter過濾級別

除此之外,還能利用filter級別過濾,來設置將不同級別記錄到相應文件,如將INFO級別信息記錄到INFO文件中,將Error級別信息記錄到Error文件中。

配置文件

後台代碼

static void Main(string[] args)

{

//Log4net幾種提錯類型

//創建日誌記錄組件

ILog iLog = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

try

{

iLog.Debug("Debug", new Exception("Debug"));

iLog.Info("Info", new Exception("Info"));

iLog.Warn("Warn", new Exception("Warn"));

iLog.Error("Error", new Exception("Error"));

iLog.Fatal("Fatal", new Exception("Fatal"));

}

catch (Exception ex)

{

throw new Exception(ex.Message);

}

}

測試結果

(二)級別繼承

級別繼承很簡單,歸結為一句話:若本事設置了級別,則用自己的級別,若沒設置級別,則繼承離自己最近的級別。

例子1

例子2

例子3

例子4

(三)日誌輸出形式

1.輸出文件形式歸納

2.項目中常用的輸出形式

3.代碼操作

3.1.在Root中定義日誌輸出媒介

3.2.配置具體的媒介,如下以文件形式為例

日誌級別:%-5level;運行時間:%r;出錯類:%logger property:[%property];錯誤描述:%message" />

3.3.後台代碼

class Program

{

static void Main(string[] args)

{

//Log4net幾種提錯類型

//創建日誌記錄組件

ILog iLog = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

try

{

iLog.Debug("Debug", new Exception("Debug"));

iLog.Info("Info", new Exception("Info"));

iLog.Warn("Warn", new Exception("Warn"));

iLog.Error("Error", new Exception("Error"));

iLog.Fatal("Fatal", new Exception("Fatal"));

}

catch (Exception ex)

{

throw new Exception(ex.Message);

}

}

}

3.4.測試結果

(四)定義日誌輸出格式

1.常用輸出格式歸納

2.code及測試結果

三 代碼實例

本示例是基於VS2017控制條程序寫的。

1.後台

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using log4net;

using System.Reflection;

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

namespace Log4netDemo

{

class Program

{

static void Main(string[] args)

{

//Log4net幾種提錯類型

//創建日誌記錄組件

ILog iLog = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

try

{

iLog.Debug("Debug", new Exception("Debug"));

iLog.Info("Info", new Exception("Info"));

iLog.Warn("Warn", new Exception("Warn"));

iLog.Error("Error", new Exception("Error"));

iLog.Fatal("Fatal", new Exception("Fatal"));

}

catch (Exception ex)

{

throw new Exception(ex.Message);

}

}

}

}

2.配置文件

日誌級別:%-5level;運行時間:%r;出錯類:%logger property:[%property];錯誤描述:%message" />

日誌級別:%-5level;運行時間:%r;出錯類:%logger property:[%property];錯誤描述:%message" />


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 dotNET跨平台 的精彩文章:

從技術角度討論微服務
容器化分散式日誌組件ExceptionLess的Angular前端UI

TAG:dotNET跨平台 |