C#

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="[开始]&#13;&#10;"/>

        <param name="Footer" value="[结尾]&#13;&#10;"/>

                   <!--

        <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="[开始]&#13;&#10;"/>

        <param name="Footer" value="[结尾]&#13;&#10;"/>

       

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

 


作者:james chan,发布于:2019/07/12
原文:https://www.cnblogs.com/james_chen/p/11175574.html