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

原文地址:https://www.cnblogs.com/wang7/p/3696768.html