zoukankan      html  css  js  c++  java
  • log4Net(写入日志文件)

       这里就简单介绍下log4Net对写入日志文件的一些了解,写入数据库类似,就不在一一介绍了。

       首先去log4net下载.

       然后我们新建一个控制台应用程序,并引入log4net.dll程序集,log4net/bin/net/4.5/release/log4net.dll

        接下来,我们在app.config配置如下。

      

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <configSections>
    <!--log4Net块配置-->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>


    <log4net>
    <!-- Define some output appenders -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
       <!--输出文件路径-->
    <file value="D:\test.txt"/>
    <appendToFile value="true"/>
    <!--最多10个日志备份文件-->
    <maxSizeRollBackups value="10"/>
    <!--每个文件最大1M-->
    <maximumFileSize value="1024KB"/>
    <!--回滚的格式按照大小-->
    <rollingStyle value="Size"/>

    <staticLogFileName value="true"/>

    <layout type="log4net.Layout.PatternLayout">
          <!--输出内容 分别为:%date日期,%thread线程ID,(%-5level)等级,(%logger)初始配置时自定义的名字,%message消息,%newline换行-->
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
    </layout>
    </appender>

    <root>
        <!--输出等级限制-->
      <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->

      <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->

    <!--如果没有定义LEVEL的值,则缺省为DEBUG-->

    <level value="DEBUG"/>
    <appender-ref ref="RollingLogFileAppender"/>
    </root>

    </log4net>

    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    </configuration>

      

           然后我们在Program.cs使用如下。

      

     //从配置文件读取log4net的配置,然后进行一个初始化工作。
    log4net.Config.XmlConfigurator.Configure();
    
    //创建一个实例,名字可随便取
      ILog logWriete = log4net.LogManager.GetLogger("Demo2");
    //这里输出的类型为error
      logWriete.Error("哈哈");

      Console.WriteLine("成功!");
      Console.ReadKey();

         接下效果如下:

      ---------------------------------------------------------------华丽分割线---------------------------------------------------------------------

      有些时候,我们要把为了区分配置,把log4Net的配置独立在一个文件里。

      在这里,我就在当前项目的根目录下,创建一个config或者是XML文件。

      这里我就创建一个名字为log4Net.xml文件。

      其次,我们右键=》属性,把《复制到输出目录》项改为始终赋值。

      并配置 logNet.xml内容如下。

      

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration> 
    <configSections>
        <!--log4Net块配置-->
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>
    
    
      <log4net>
        <!-- Define some output appenders -->
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
       <!--输出文件路径-->
          <file value="D:\test.txt"/>
          <appendToFile value="true"/>
          <!--最多10个日志备份文件-->
          <maxSizeRollBackups value="10"/>
          <!--每个文件最大1M-->
          <maximumFileSize value="1024KB"/>
          <!--回滚的格式按照大小-->
          <rollingStyle value="Size"/>
    
          <staticLogFileName value="true"/>
    
          <layout type="log4net.Layout.PatternLayout">
          <!--输出内容 分别为:%date日期,%thread线程ID,(%-5level)等级,(%logger)初始配置时自定义的名字,%message消息,%newline换行-->
            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
          </layout>
        </appender>
    
        <root>
        <!--输出等级限制-->
         <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->  
    
      <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
    
         <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
    
          <level value="DEBUG"/>
          <appender-ref ref="RollingLogFileAppender"/>
        </root>
    
      </log4net>
     
    </configuration>

      然后,我们把app.config中的所有log4Net配置都去掉。

      

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      
      
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
        </startup>
      
    </configuration>

      最后我们在Program.cs使用如下。

     //从配置文件读取log4net的配置,然后进行一个初始化工作。
    log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(@"log4Net.xml"));//这里指定路径
    
    /*
    有些人,是直接在调用类命名上面直接打上,[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"log4Net.xml", Watch = true)]这一句也是可以的。
    
    其次,只要是ConfigureAndWatch上面这一句
    在lognet.xml文件中的<<log4Net块配置>>是可以去掉的。
    */
    
    
    //创建一个实例,名字可随便取
      ILog logWriete = log4net.LogManager.GetLogger("Demo2");
    //这里输出的类型为error
      logWriete.Error("哈哈");
      Console.WriteLine("成功!");
      Console.ReadKey();

      注意事项。

        1:如果报错,请查看配置节点。

        2:如果没报错,而并没有输出文件,请查看调用的时候是否有初始化配置这一句代码。

           本文结束。

          

         如果问题,欢迎讨论,咨询,建议,意见。

  • 相关阅读:
    LOJ #6008. 「网络流 24 题」餐巾计划
    P2144 [FJOI2007]轮状病毒
    随记
    1010: [HNOI2008]玩具装箱toy(斜率优化)
    HDU 3507 Print Article(斜率优化)
    4819: [Sdoi2017]新生舞会(分数规划)
    POJ 2976 Dropping tests(01分数规划)
    spoj 104 Highways(Matrix-tree定理)
    dp专练
    4152: [AMPPZ2014]The Captain
  • 原文地址:https://www.cnblogs.com/wzf-Code/p/5579919.html
Copyright © 2011-2022 走看看