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");