首页 > Python基础教程 >
-
Log4net采用外部配置文件和多记录器的方法
1) 创建配置文件,可以放在任意位置,名字可以任意的xml文件
例如,文件名 Log.Config.xml,内容如下
<?xml version="1.0" encoding="utf-8"?>
<log4net name="DefaultLogger">
<root>
<level value="ALL"/>
</root>
<logger name="Doraemon.Hardware">
<appender-ref ref="HardwareLogger"/>
</logger>
<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");