美文网首页
Asp.Net Log4net 配置

Asp.Net Log4net 配置

作者: AsaGuo | 来源:发表于2019-08-06 13:52 被阅读0次

一、摘要

  1. NuGet → Log4net
  2. 创建工具类Log4Helper.cs
  3. 创建配置文件Config/Log4net.config
  4. Web.config
  5. AssemblyInfo.cs
  6. 使用

二、详情

  1. NuGet → Log4net
  2. 创建工具类Log4Helper.cs
public static class Log4Helper
    {
        public static void Fatal(Type type, object message, Exception exception = null)
        {
            ILog log = LogManager.GetLogger(type);
            if (exception == null)
                log.Fatal(message);
            else
                log.Fatal(message, exception);
        }

        public static void Error(Type type, object message, Exception exception = null)
        {
            ILog log = LogManager.GetLogger(type);
            if (exception == null)
                log.Error(message);
            else
                log.Error(message, exception);
        }

        public static void Warn(Type type, object message, Exception exception = null)
        {
            ILog log = LogManager.GetLogger(type);
            if (exception == null)
                log.Warn(message);
            else
                log.Warn(message, exception);
        }

        public static void Info(Type type, object message, Exception exception = null)
        {
            ILog log = LogManager.GetLogger(type);
            if (exception == null)
                log.Info(message);
            else
                log.Info(message, exception);
        }

        public static void Debug(Type type, object message, Exception exception = null)
        {
            ILog log = LogManager.GetLogger(type);
            if (exception == null)
                log.Debug(message);
            else
                log.Debug(message, exception);
        }

        /// <summary>
        /// 取得当前源码的哪一行
        /// </summary>
        /// <returns></returns>
        public static int GetLineNum()
        {
            StackTrace st = new StackTrace(1, true);
            StackFrame stackFrame = st.GetFrame(0);
            int lineNo = 0;
            if (stackFrame != null)
                lineNo = stackFrame.GetFileLineNumber();
            
            return lineNo;
        }

        /// <summary>
        /// 取当前源码的源文件名
        /// </summary>
        /// <returns></returns>
        public static string GetCurSourceFileName()
        {
            StackTrace st = new StackTrace(1, true);
            StackFrame stackFrame = st.GetFrame(0);
            string fileName = "【未知文件名】";
            if (stackFrame != null)
                fileName = stackFrame.GetFileName();

            return fileName;
        }
    }
  1. 创建配置文件 Config/Log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <appender name="fatalAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="FATAL" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <File value="Logs\fatal.log" />
      <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="errorAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="ERROR" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <File value="Logs\err.log" />
      <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="warnAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="WARN" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <File value="Logs\warn.log" />
      <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" />
      <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" />
      <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" />
      <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="fatalAppender" />
      <appender-ref ref="errorAppender" />
      <appender-ref ref="warnAppender" />
      <appender-ref ref="infoAppender" />
      <appender-ref ref="debugAppender" />
    </root>
  </log4net>
</configuration>
  1. Web.config添加配置如下
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
</configuration>
  1. AssemblyInfo.cs中添加代码如下
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config/log4net.config", Watch = true)]
  1. 使用
Log4Helper.Debug(typeof(HomeController), "Debug");
Log4Helper.Fatal(typeof(HomeController), "Fatal");
Log4Helper.Error(typeof(HomeController), "Error");
Log4Helper.Info(typeof(HomeController), "Info");
Log4Helper.Warn(typeof(HomeController), "Warn");

相关文章

网友评论

      本文标题:Asp.Net Log4net 配置

      本文链接:https://www.haomeiwen.com/subject/ackxcftx.html