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