zoukankan      html  css  js  c++  java
  • log4net使用方法

    1,下载log4net.dll动态库,然后添加到工程引用。

    2,在工程的AssemblyInfo.cs文件中关联配置文件,添加下面一句:

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

    3,添加配置文件 log4net.config, 将下面的内容复制到 任意txt文件中,然后重命名为log4net.config,放到程序根目录下:

    <?xml version="1.0"?>
    <configuration>
      <configSections>   
        <!--添加log4net的配置信息声明-->
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
      </configSections>
      
      <!--log4net详细信息-->
      <log4net>
        <!--根日志是所有日志对象的祖先,被其他日志对象继承-->
        <root>
          <!-- 级别高低:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF  -->
          <level value="ALL" />
          <!--文件形式记录日志 Rolling代表日志可以记录在不止一个文件中;还可以使用控制台或数据库记录日志 -->
          <appender-ref ref="RollingLogFileAppender" />  
        </root>   
        
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <!--定义文件存放路径,相对于log4net.config的位置-->
          <param name="File" value="log\" />
             
          <!--是否在文件中追加日志信息-->
          <param name="AppendToFile" value="true" />
          <!--如果一直输出到同一文件中,则不需要下面代码-->
          <!--文件输出以日期方式滚动-->
          <param name="RollingStyle" value="Date" />
          <!--日志文件名称以输出日期命名,可更改其他日期输出方式-->
          <datePattern value="yyyyMMdd'.log'" />
          
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <param name="MaxSizeRollBackups" value="100" />
          <!--表明输出的日志信息是否一直在同一文件中-->    
          <param name="StaticLogFileName" value="false" />
          <!--备份文件的最大文件数目-->
          <maxSizeRollBackups value="10" />
          <!--日志文件最大尺寸-->
          <maximumFileSize value="500KB" />
          <!--输出格式-->
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%n时间:%d 类名:%c 行数:%L 级别:%p%n内容:%m%n" />
          </layout>
          <!--日志输出级别-->     
          <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="ALL" />
            <levelMax value="FATAL" />
          </filter>
        </appender>
        
      </log4net>
    </configuration>
    View Code

    4,程序实例如下:

        public partial class test : System.Web.UI.Page
        {
            /// <summary>
            /// 定义一个静态的日志对象
            /// </summary>
            private static ILog LOG = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);              
    
            protected void Page_Load(object sender, EventArgs e)
            {
               LOG.Info("这是普通消息");
               try
               {
                   int i = 0;
                   i = 0 / i;
               }
               catch(Exception ex)
               {
                   LOG.Error("执行Page_Load异常", ex);
               }          
            }
        }
    View Code

    5,log4net 多个配置文件,写入多个日志文件,多个程序或多个应用程序集同时使用log4net 的解决办法:

    (1)添加一个日志类,定义一个静态的Logger对象,然后在静态构造函数中初始化,其他地方直接使用这个对象写日志。

        public class Log
        {
    
            static Log()
            {
    
                string sPath = System.Web.HttpContext.Current.Server.MapPath("~/log4net.config");   
                FileInfo log4NetConfigFile = new FileInfo(sPath);
                if (log4NetConfigFile == null || !log4NetConfigFile.Exists) throw new Exception("unable to find log file");
                log4net.Config.XmlConfigurator.ConfigureAndWatch(log4NetConfigFile);
                Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
            }
    
    
            /// <summary>
            /// 日志对象
            /// </summary>
            public static log4net.ILog Logger ; 
        }

    这里的关键是使用log4net自带的一个方法:log4net.Config.XmlConfigurator.ConfigureAndWatch

    参考网址:http://apache-logging.6191.n7.nabble.com/How-to-use-separate-config-file-for-log4net-td22584.html

    wijitha 的回答。

    这个就可以定义多个配置文件,每个程序集使用自己的配置文件。

    参考文章:

     Log4Net使用指南  http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html

     Log4Net 使用基本设置 http://blog.sina.com.cn/s/blog_6cb7b8d701011ttj.html

  • 相关阅读:
    Java中String类两种实例化的区别(转)
    Linux内核如何装载和启动一个可执行程序(转)
    CentOS 7 下安装jdk1.8(转)
    MySQL中死锁(转)
    CTF取证方法大汇总,建议收藏!
    实战经验|大神战队都在i春秋教你打CTF
    CTF丨从零开始搭建WEB Docker靶场
    业务逻辑漏洞探索之敏感信息泄露
    实战经验丨业务逻辑漏洞探索之活动类漏洞
    漏洞经验分享丨Java审计之XXE(下)
  • 原文地址:https://www.cnblogs.com/wang7/p/3696768.html
Copyright © 2011-2022 走看看