[料理佳餚] 使用 log4net

  • 4438
  • 0
  • C#
  • 2016-04-30

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 >

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學