專案右鍵 → 加入參考 → 瀏覽選取 log4net.dll。
log4net.config (置於專案根目錄,設定「複製到輸出目錄」為「永遠複製」)<?xml version="1.0" encoding="utf-8"?>
<log4net>
<root>
<level value="INFO" />
<appender-ref ref="FileAppender" />
</root>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="log.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5level %date %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
</log4net>
AssemblyInfo.cs 中)[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
Watch = true:啟用檔案監視,修改設定檔自動重載,無需重啟應用程式。using log4net;
using System.Reflection;
public class MyService {
// 靜態唯讀 logger,效能最佳
private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public void BackupData() {
_log.Info("開始備份資料...");
try {
// 備份邏輯...
_log.Info("備份完成。");
} catch (Exception ex) {
_log.Error("備份失敗", ex);
}
}
}
DEBUG < INFO < WARN < ERROR < FATAL
在 <root> 加入多個 <appender-ref>,即可同時寫入檔案、輸出主控台、發送郵件、寫入資料庫等。