zoukankan      html  css  js  c++  java
  • log4net应用

    1,配置文件

        如果放在Web.config文件中,要放在根节点<configuration>下。

        但一般为了方便配置文件的修改,可以将配置文件独立于Web.config,而单独放在一个文本文件(.txt或.config都可以)中。

    <?xml version="1.0"?>
    <configuration>
      <log4net>
        <root>
          <level value="INFO" />
        </root>
        <logger name="ProjectA">
          <appender-ref   ref="ProjectAConfig"   />
        </logger>
        <logger name="ProjectB">
          <appender-ref   ref="ProjectBConfig"   />
        </logger>
        <logger name="ProjectC">
          <appender-ref   ref="ProjectCConfig"   />
        </logger>
        <appender name="ProjectAConfig" type="log4net.Appender.FileAppender" >
          <param name="File" value="log-file.txt" />
          <param name="AppendToFile" value="true" />
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] \r"/>
          </layout>
        </appender>
        <appender name="ProjectBConfig" type="log4net.Appender.FileAppender" >
          <param name="File" value="log-file1.txt" />
          <param name="AppendToFile" value="true" />
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] \r"/>
          </layout>
        </appender>
        <appender name="ProjectCConfig" type="log4net.Appender.RollingFileAppender" >
          <param name="File" type="" value="log" />
          <param name="AppendToFile" value="true" />
          <param name="RollingStyle" value="Date" />

      <!--<param name="RollingStyle" value="Composite" />-->
          <param name="DatePattern" value="yyyyMMdd" />
          <param name="StaticLogFileName" value="false" />

          <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
            <param name="Header" value="----------------------header--------------------------\r\n" />
            <param name="Footer" value="----------------------footer--------------------------\r\n" />
          </layout>
        </appender>
      </log4net>
    </configuration>


    2,读取配置文件生成ILog对象

    a)  首先引入log4net.dll(下载地址:http://logging.apache.org/log4net/

    b)  在项目的AssemblyInfo.cs文件里添加以下的语句:

         [assembly:log4net.Config.DOMConfigurator(ConfigFile="filename",Watch=true/false)]

         filename的值是配置文件的路径,Watch的值表示是否实时反映配置文件的修改。

         或者动态加载

         DOMConfigurator.[Configure/ConfigureAndWatch](new FileInfo("filename"));

         Configure/ConfigureAndWatch的区别在于是否实时反映配置文件的修改。

         在2.0及以后推荐将"DOMConfigurator"改为"XmlConfigurator",但是2.0及以后的Web项目是没 有"AssemblyInfo.cs"文件的,总不能在每个需要使用log4net的类中都加上面那二行代码。针对这种情况,网上也有二种解决办法:(1)新建类库继承log4,用 [assembly]方式加载配置,Web项目再引用类库;(2)在Global文件中动态加载配置。个人认为log4net提供的方法已经够用了,没有必要再去继承,推荐使用第(2)种:

         在Global.asax的Application_Start方法中添加如下代码:
            System.IO.FileInfo infoF = new System.IO.FileInfo(Server.MapPath("log4net.txt"));
            log4net.Config.XmlConfigurator.ConfigureAndWatch(infoF);

    3,在项目中使用log4net

         添加自定义类

        public static class Log4netBase
        {
            public static void Info(string message, Exception e)
            {
                log4net.ILog logger = log4net.LogManager.GetLogger("ProjectAConfig");
                logger.Info(message, e);
                logger.Logger.Repository.Shutdown();
            }
        }

    4,相关问题

    生成的log文件无法删除。解决办法:

    A) 调用ILog对象的Logger.Repository.Shutdown();

    B) 对于web工程,是由于log文件被IIS进程占用,可以关闭IIS以释放IIS对文件的占用;或者直接改变使用log4net的相关代码文件(如果在Global.asax中读取的log4net配置,直接在Global.asax文件中Ctrl+S即可),之后即可删除。我觉得这其实这两种方式都是关闭了一下IIS。

    参考:http://kb.cnblogs.com/a/1526841/

  • 相关阅读:
    20.11.16 leetcode406 leetcode中的排序写法
    20.11.15 leetcode402
    20.11.14 leetcode1122(自定义排序)
    polyline NOIP模拟 数论 规律
    alien NOIP模拟 位运算 数论
    跳石头 vijos1981 NOIP2015 D2T1 二分答案 模拟 贪心
    寻找道路 vijos1909 NOIP2014 D2T2 SPFA
    不死的LYM NOIP模拟 二分+状压DP
    死亡的颂唱者 NOIP模拟 贪心 DFS
    无线网络发射器选址 vijos 1908 NOIP2014 D2T1 模拟
  • 原文地址:https://www.cnblogs.com/jiajinyi/p/1766889.html
Copyright © 2011-2022 走看看