實現主控台應用程式輸出記錄,支援依記錄等級自訂文字與背景顏色,除錯階段閱讀體驗相當直觀。
- 在Visual Studio建立新的主控台應用程式專案
- 於專案加入
App.config組態檔 - 匯入log4net(透過NuGet安裝 / 參考log4net.dll)
- 編寫
App.config當中的log4net設定 - 程式碼初始化log4net,並輸出記錄
主控台記錄可以針對不同記錄等級設定前景、背景色彩,方便分辨記錄類型。
App.config 組態設定
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!-- 主控台彩色輸出附加器 ColoredConsoleAppender -->
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<!-- ERROR等級色彩設定 -->
<mapping>
<level value="ERROR" />
<foreColor value="White" />
<backColor value="Red, HighIntensity" />
</mapping>
<!-- DEBUG等級色彩設定 -->
<mapping>
<level value="DEBUG" />
<backColor value="Green" />
</mapping>
<!-- INFO等級色彩設定 -->
<mapping>
<level value="Info" />
<backColor value="Yellow" />
</mapping>
<!-- WARN、FATAL可自行新增對應色彩對應規則 -->
<!-- 記錄輸出格式範本 -->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!-- 根記錄器,開啟主控台輸出 -->
<root>
<level value="All" />
<appender-ref ref="ColoredConsoleAppender" />
</root>
</log4net>
</configuration>Code language: HTML, XML (xml)
格式占位符說明
%date:記錄產生時間[%thread]:執行緒編號%-5level:記錄等級(佔5個字元寬度對齊)%logger:記錄對應的類別名稱%message:記錄內容本體%newline:自動換行
Program.cs
using System;
using log4net;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 載入並初始化log4net組態
log4net.Config.XmlConfigurator.Configure();
// 取得記錄器執行個體,傳入目前類別型別,方便追蹤記錄來源
ILog logger = LogManager.GetLogger(typeof(Program));
// 輸出各種等級的記錄
logger.Info("一般記錄");
logger.Error("錯誤記錄");
logger.Debug("偵錯資訊");
logger.Fatal("嚴重錯誤");
logger.Warn("警告資訊");
Console.ReadKey();
}
}
}Code language: JavaScript (javascript)
執行畫面效果
主控台會依不同記錄等級自動顯示對應底色:
- INFO:黃色背景
- DEBUG:綠色背景
- ERROR / FATAL:亮紅色背景
- WARN:黃色背景
輸出範例:
2017-03-21 20:35:31,550 [9] INFO ConsoleApplication1.Program [(null)] - 一般記錄
2017-03-21 20:35:31,592 [9] ERROR ConsoleApplication1.Program [(null)] - 錯誤記錄
2017-03-21 20:35:31,592 [9] DEBUG ConsoleApplication1.Program [(null)] - 偵錯資訊
2017-03-21 20:35:31,593 [9] FATAL ConsoleApplication1.Program [(null)] - 嚴重錯誤
2017-03-21 20:35:31,594 [9] WARN ConsoleApplication1.Program [(null)] - 警告資訊Code language: CSS (css)

主控台記錄輸出