1) 建立配置文件,能夠放在任意位置,名字能夠任意的xml文件app
例如,文件名 Log.Config.xml,內容以下spa
<?xml version="1.0" encoding="utf-8"?>日誌
<log4net name="DefaultLogger">orm
<root>xml
<level value="ALL"/>進程
</root>utf-8
<logger name="Doraemon.Hardware">ci
<appender-ref ref="HardwareLogger"/>io
</logger>table
<logger name="Doraemon.Software">
<appender-ref ref="UILogger"/>
</logger>
<!--硬件日誌-->
<appender name="HardwareLogger" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\Hardware\" />
<param name="AppendToFile" value="true" />
<param name="rollingStyle" value="Date" />
<param name="datePattern" value="yyyy-MM-dd_'Log.txt'" />
<param name="staticLogFileName" value="false"/>
<param name="ImmediateFlush" value="true" />
<!-- 增長這個,能夠當即寫日誌,好像不起做用 -->
這個模板,能夠省略日期 |
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[開始] "/>
<param name="Footer" value="[結尾] "/>
<!--
<param name="ConversionPattern" value="%d %-5p - %m%n" />
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
<param name="ConversionPattern" value="%d{HH:mm:ss,fff} [%t] %-5p %c [%x] - %m%n" />
-->
<param name="ConversionPattern" value="%d{HH:mm:ss,fff} %-5p - %m%n" />
</layout>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--使用最小鎖定模型(minimal locking model),以容許多個進程能夠寫入同一個文件。 -->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
<!-- WARN ERROR-->
</filter>
</appender>
<!--UI & Workflow日誌-->
<appender name="UILogger" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\Software\" />
<param name="AppendToFile" value="true" />
<param name="rollingStyle" value="Date" />
<param name="datePattern" value="yyyy-MM-dd_'Log.txt'" />
<param name="staticLogFileName" value="false"/>
<param name="ImmediateFlush" value="true" />
<!-- 增長這個,能夠當即寫日誌,好像不起做用 -->
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[開始] "/>
<param name="Footer" value="[結尾] "/>
<param name="ConversionPattern" value="%d{HH:mm:ss,fff} %-5p - %m%n" />
</layout>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--使用最小鎖定模型(minimal locking model),以容許多個進程能夠寫入同一個文件。 -->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
<!-- WARN ERROR-->
</filter>
</appender>
</log4net>
2) 程序入口,增長 Log4net 配置入口
/// 應用程序的主入口點。
/// </summary>
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//log4net.Config.XmlConfigurator.Configure( ); //爲LOG4NET增長的,這個是 配置文件放在 app.config.xml的方式
System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\Users\James\source\repos\WindowsFormsApp_log4net_多個_外部配置\bin\Debug\Log.Config.xml");
log4net.Config.XmlConfigurator.Configure(fi);
//或者
//XmlConfigurator.Configure(new System.IO.FileInfo(@"C:\Users\James\source\repos\WindowsFormsApp_log4net_多個_外部配置\bin\Debug\Log.Config.xml"););
Application.Run(new Form1());
與配置文件的 LogerName 關聯 |
3) 增長靜態的記錄器
private static readonly ILog log = LogManager.GetLogger(@"Doraemon.Hardware");//@"Doraemon.UI"); begins by importing log4net related classes.
private static readonly ILog log2 = LogManager.GetLogger(@"Doraemon.Software");//@"Doraemon.UI"); begins by importing log4net related classes.
4) 開始使用
log.Error("Log1");
log2.Error("log2");