日志记录包Log4Net使用

曾经做过一个项目使用log4net日志记录包。前几天一个新项目要做,怎么也想不起来。在网上找了一下,感觉都比较麻烦。特此记录,以备下次用到时,直接使用。

先是一个xml文件命名为log4net.config。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net debug="True">
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="Log\AT.log"/>
      <param name="datePattern" value="YY-MM-dd HH:mm"/>
      <param name="AppendToFile" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
      </layout>
    </appender>
    <appender name="HttpTraceAppender" type="log4net.Appender.ASPNetTraceAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
      </layout>
    </appender>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
      </layout>
    </appender>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="I:\net开发\mgShop\UnitTestProject\Log\"/>
      <appendToFile value="True"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMMdd'.log'"/>
      <staticLogFileName value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d [%t] %-5p %c - %m%n"/>
      </layout>
    </appender>
    <root>
      <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
      <level value="All"/>
      <!--<level value="ERROR" />-->
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>
</configuration>

然后是自定义一个日志记录的类。

 public static class LogHelper
    {
        static log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        static LogHelper()
        {
            var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
            log4net.Config.XmlConfigurator.ConfigureAndWatch(logCfg);
            logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        }
        public static void Debug(string message)
        {
            logger.Debug(message);
        }
        public static void Info(string message)
        {
            logger.Info(message);
        }
        public static void Error(string message)
        {
            logger.Error(message);
        }
        public static void Warn(string message)
        {
            logger.Warn(message);
        }
    }

上面的方法每次写日志的时候只能返回特定的类型。如果要显示不同的类写出的日志。可以声明一个父类,然后继承此类。使用下面的类来写日志。

 public class CommBase
    {
        public ILog logger = null;

        public CommResponse commResponse = new CommResponse();
        public CommBase()
        {
            var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
            log4net.Config.XmlConfigurator.ConfigureAndWatch(logCfg);
            logger = log4net.LogManager.GetLogger(this.GetType());
        }
        public void ReturnJson(Object obj)
        {
            System.Web.HttpContext.Current.Request.ContentType = "text/plain";
            String json = JsonConvert.SerializeObject(obj);
            System.Web.HttpContext.Current.Response.Write(json);
        }
    }

猜你喜欢

转载自blog.csdn.net/pengdayong77/article/details/73740219