Log4net採用外部配置文件和多記錄器的方法

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="[開始]&#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");

相關文章
相關標籤/搜索