log4net 是一個 Open Source 的 log 工具,最近才開始了解它,真的是相見恨晚。
它除了已經有的 Appender 之外,還可以自己實作 IAppender 這個介面客製自己所需要的 log 方式。
安裝
- 使用 NuGet 參考 log4net API
設定
<configSections>
加入<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
- 將
<log4net>
區段放在 App.config - 新增 apperder (FileAppender)
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="D:\Labs\%property{ApplicationName}-%property{log4net:HostName}.txt" />
<appendtofile value="true" />
<lockingmodel type="log4net.Appender.FileAppender+MinimalLock" />
<datepattern value="'.'yyyy-MM-dd" />
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%date | %-5level | %logger{1}.%method:%line | %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelmin value="DEBUG" />
<levelmax value="ERROR" />
</filter>
</appender>
加入 root
<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
</root>
初始
- 在 AssemblyInfo.cs 加入
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
或在整個 Application 起來的同時呼叫log4net.Config.XmlConfigurator.Configure()
- 也可在整個 Application 起來的同時自行定義 for log4net 用的全域變數:
log4net.GlobalContext.Properties["ApplicationName"] = "WindowsLab";
- 全域變數使用方式即在設定檔內加符合 %property{xxx} 格式的文字,即會作用,以剛剛為範例:%property{ApplicationName}。
使用
- 宣告 log4net.ILog 型態的變數,並給予
Logger:private static readonly ILog log = LogManager.GetLogger(typeof(Form1))
; - 寫入Log:
log.Info("Test");
- 也可使用類似 string.Format 的語法:
log.InfoFormat("{0}", "Test");
< Source Code >