log4net configuration and use

There are many online check writing and configuration, several methods are the result of Baidu came out mixed writing, copy together the results can not run properly. So to write their own code up to be a successful backup.

Operating environment: log4net 2.03 version, .net 4.5

General steps:

    1 : Create a new profile log4net.config
     2 : Create a static Logger class to write the log

Specific steps:

One: Create a log4net.config file or Web App in the root directory, complete as follows:

        It is important to note that the complete contents of the configuration file, which some articles saying we should copy the contents in the <configuration> node, the results can not write the log normal

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="ERROR" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />
    <file value="Logs\err.log" />
    <encoding value="utf-8"/>
    <preserveLogFileNameExtension value="true" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="INFO" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />
    <file value="Logs\info.log" />
    <encoding value="utf-8"/>
    <preserveLogFileNameExtension value="true" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="DEBUG" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />
    <file value="Logs\debug.log" />
    <encoding value="utf-8"/>
    <preserveLogFileNameExtension value="true" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>
  <appender name="perfAppender" type="log4net.Appender.RollingFileAppender">
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="INFO" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />
    <file value="Logs\perf.log" />
    <encoding value="utf-8"/>
    <preserveLogFileNameExtension value="true" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %logger - %message%newline" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="errorAppender" />
    <appender-ref ref="infoAppender" />
    <appender-ref ref="debugAppender" />
  </root>
  <logger name="Performance" additivity="false">
    <level value="ALL" />
    <appender-ref ref="perfAppender" />
  </logger>
</log4net>

Basically able to read, this configuration defines several filters, the different levels of log files written in different names, you can also modify the configuration is written to a log file.

 

Two: to create a log static class

    ///  <Summary> 
    /// frame the log
     ///  </ Summary> 
    public  class WRLogger 
    { 

        static the ILog _logger = null ;
         ///  <Summary> 
        /// Default the log
         ///  </ Summary> 
        static the ILog Logger 
        { 
            GET 
            { 
                IF (_logger == null ) 
                { 
                    log4net.Config.XmlConfigurator.Configure ( new new the FileInfo ( " log4net.config " )); 
                    _loggerLogManager.GetLogger = ( " the Performance " ); 
                } 
                return _logger; 
            } 
        } 
        ///  <Summary> 
        /// recorded log information
         ///  </ Summary> 
        ///  <param name = "MSG"> </ param> 
        public  static  void Info ( String MSG) 
        { 

            logger.info (MSG); 
        } 
        ///  <Summary> 
        /// recording debug log, mainly for SQL or methods to be invoked
         ///  </ Summary> 
        ///  <param name = "msg"> </ param>
        public static voidThe Debug ( String MSG) { 
            logger.debug (MSG); 
        } 
        ///  <Summary> 
        /// log errors
         ///  </ Summary> 
        ///  <param name = "MSG"> </ param> 
        public  static  void error ( String MSG) { 
            logger.Error (MSG); 
        } 
        ///  <Summary> 
        /// log errors
         ///  </ Summary> 
        ///  <param name = "EX"> </ param> 
        public  static  void Error (Exception EX) 
        { 
            logger.Error (EX);
        }
        /// <summary>
        /// 记录错误日志
        /// </summary>
        /// <param name="ex"></param>
        /// <param name="msg"></param>
        public static void Error(Exception ex,string msg)
        {
            logger.Error( msg+" "+ex.Message, ex);
        }

    }

among them:

log4net.Config.XmlConfigurator.Configure (new new FileInfo ( "log4net.config" )); 
This sentence is particularly critical, load the configuration file, load this way,
1: you do not need to write configuration "AssemblyInfo.cs" in
2: you do not need to write any information about log4net configuration in app.config or web.config in

this way can be used directly.

Guess you like

Origin www.cnblogs.com/coolsundy/p/11723779.html