首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET WinForms 專案整合 log4net 完整設定指南

     編輯:關於.NET

前言

log4net 是移植自 Java log4j 的成熟日誌框架,支援多等級、多輸出端、彈性格式。本文以 WinForms 專案為例,詳述從下載、引用、設定檔撰寫到程式碼呼叫的完整流程。

步驟 1:取得組件

  • 官網:Apache log4net
  • 解壓 incubating-log4net-1.2.10.zip\log4net-1.2.10\bin\net\2.0\release 取得 log4net.dll

步驟 2:專案引用

  • 將 log4net.dll 複製至專案 bin\Debug(或統一 Lib 資料夾)
  • VS 方案總管 → 參考 → 右鍵「加入參考」→ 瀏覽選取 dll

步驟 3:建立 log4net.xml 設定檔

置於 bin\Debug(輸出目錄),內容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <root>
      <level value="WARN" />
      <appender-ref ref="LogFileAppender" />
      <appender-ref ref="ConsoleAppender" />
    </root>
    <logger name="com.suntom">
      <level value="DEBUG" />
    </logger>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="./log.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="FATAL" />
      </filter>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
      </layout>
    </appender>
  </log4net>
</configuration>

關鍵設定說明

元素用途
root/level全域預設等級(此處 WARN)
logger name="com.suntom"特定命名空間覆蓋等級(DEBUG)
PatternLayout%d 時間、%t 執行緒、%p 等級、%c 類別、%m 訊息、%n 換行
LevelRangeFilter限制此 Appender 只輸出 DEBUG~FATAL

步驟 4:啟用設定檔監看

在 AssemblyInfo.cs 末尾加入:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.xml", ConfigFileExtension = "xml", Watch = true)]
  • Watch = true:檔案異動自動重載,無需重啟應用程式。

步驟 5:程式碼中使用

using log4net;

public class TestClass {
    private static readonly ILog log = LogManager.GetLogger(typeof(TestClass));
    public void InitMenus() {
        log.Debug("Enter InitMenus()");
        // 業務邏輯...
    }
}

步驟 6:驗證輸出

執行程式觸發日誌後,bin\Debug\log.txt 將包含:

2011-07-04 22:38:58,226 [10] DEBUG com.suntom.TestClass - Enter InitMenus()

常見坑點提醒

  • 設定檔 type 屬性的組件名稱需與實際引用 dll 版本一致(log4net 而非 log4net-net-1.0)。
  • ASP.NET 專案請將設定寫在 web.config 的 configSections,並移除 ConfigFile 參數(直接讀 web.config 區段)。
  • 生產環境建議 root level 設為 INFO 或 WARN,避免 DEBUG 量大影響效能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved