• log4net使用流程


    从网上下载的破解版的hishop中的源码扒出来的,觉得不错,先记下来,以后做项目异常BUG记录都用这个。。

    下面是使用流程:

    1. VS中用NUGET搜索log4net,安装

    2. 项目的工具类库Util中建一Log类,代码如下:

    using log4net;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace JiuFen.KuaiLe10.Util
    {
        public static class Log
        {
            public static void Error(object message)
            {
                ILog logger = LogManager.GetLogger(Log.GetCurrentMethodFullName());
                logger.Error(message);
            }

            public static void Error(object message, System.Exception exception)
            {
                ILog logger = LogManager.GetLogger(Log.GetCurrentMethodFullName());
                logger.Error(message, exception);
            }

            public static void Info(object message)
            {
                ILog logger = LogManager.GetLogger(Log.GetCurrentMethodFullName());
                logger.Info(message);
            }

            public static void Info(object message, System.Exception ex)
            {
                ILog logger = LogManager.GetLogger(Log.GetCurrentMethodFullName());
                logger.Info(message, ex);
            }

            public static void Warn(object message)
            {
                ILog logger = LogManager.GetLogger(Log.GetCurrentMethodFullName());
                logger.Warn(message);
            }

            public static void Warn(object message, System.Exception ex)
            {
                ILog logger = LogManager.GetLogger(Log.GetCurrentMethodFullName());
                logger.Warn(message, ex);
            }

            public static void Debug(object message)
            {
                ILog logger = LogManager.GetLogger(Log.GetCurrentMethodFullName());
                logger.Debug(message);
            }

            public static void Debug(object message, System.Exception ex)
            {
                ILog logger = LogManager.GetLogger(Log.GetCurrentMethodFullName());
                logger.Debug(message, ex);
            }

            private static string GetCurrentMethodFullName()
            {
                string result;
                try
                {
                    int num = 2;
                    System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace();
                    int num2 = stackTrace.GetFrames().Length;
                    System.Diagnostics.StackFrame frame;
                    string text;
                    do
                    {
                        frame = stackTrace.GetFrame(num++);
                        System.Type declaringType = frame.GetMethod().DeclaringType;
                        text = declaringType.ToString();
                    }
                    while (text.EndsWith("Exception") && num < num2);
                    string name = frame.GetMethod().Name;
                    result = text + "." + name;
                }
                catch
                {
                    result = null;
                }
                return result;
            }
        }
    }

    3. web.config文件中加入如下内容:

      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

      </configSections>

     <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
      </system.webServer>

    <log4net>
        <!--数据日志-->
        <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <param name="File" value="LogInfo" />
          <param name="AppendToFile" value="true" />
          <param name="rollingStyle" value="Date" />
          <param name="datePattern" value="yyyy-MM-dd.'Info.log'" />
          <param name="staticLogFileName" value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%n%n%n 记录时间:%date %n日志级别:  %-5level %n出错类:%logger  %n错误描述:%message %newline%newline" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="INFO" />
          </filter>
        </appender>
        <!--错误日志-->
        <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <param name="File" value="LogError" />
          <param name="AppendToFile" value="true" />
          <param name="rollingStyle" value="Date" />
          <param name="datePattern" value="yyyy-MM-dd.'error.log'" />
          <param name="staticLogFileName" value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%n%n%n 记录时间:%date %n日志级别:  %-5level %n出错类:%logger  %n错误描述:%message %newline%newline" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="ERROR" />
          </filter>
        </appender>
        <!--调试日志-->
        <appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender">
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <param name="File" value="LogDebug" />
          <param name="AppendToFile" value="true" />
          <param name="rollingStyle" value="Date" />
          <param name="datePattern" value="yyyy-MM-dd.'debug.log'" />
          <param name="staticLogFileName" value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%n%n%n 记录时间:%date %n日志级别:  %-5level %n出错类:%logger  %n错误描述:%message %newline%newline" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="DEBUG" />
          </filter>
        </appender>
        <root>
          <level value="DEBUG" />
          <!--文件形式记录日志-->
          <appender-ref ref="ErrorRollingFileAppender" />
          <appender-ref ref="DebugRollingFileAppender" />
          <appender-ref ref="InfoRollingFileAppender" />
        </root>

      </log4net>

    4. 建立基类控制 器,重写OnException方法:

    using JiuFen.KuaiLe10.Util;
    using log4net;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;

    namespace JiuFen.KuaiLe10.Web.Controllers
    {
        public class BaseController : Controller
        {
            protected override void OnException(ExceptionContext filterContext)
            {
                Exception exception = filterContext.Exception;
                string message = exception.Message;
                base.OnException(filterContext);

                string str = filterContext.RouteData.Values["controller"].ToString();
                string str1 = filterContext.RouteData.Values["action"].ToString();
                object item = filterContext.RouteData.DataTokens["area"];
                string str2 = string.Format("页面未捕获的异常:Area:{0},Controller:{1},Action:{2}", item, str, str1);


                Log.Error(str2, exception);
            }
     
        }
    }

    5. 最重要的,在你的公用类库所在的项目的AssemblyInfo.cs文件中加入:

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]

     

    这样在建立控制器的时候继承自基类控制器,运行中出错的话都会记录到网站目录下的log目录下的debug目录下

  • 相关阅读:
    局部变量和全局变量
    Javascript高级编程学习笔记(26)—— 函数表达式(4)私有变量
    Javascript高级编程学习笔记(25)—— 函数表达式(3)模仿块级作用域
    Javascript高级编程学习笔记(24)—— 函数表达式(2)闭包
    Javascript高级编程学习笔记(23)—— 函数表达式(1)递归
    Javascript高级编程学习笔记(22)—— 对象继承
    Javascript高级编程学习笔记(21)—— 对象原型
    Javascript高级编程学习笔记(20)—— 创建对象
    Javascript高级编程学习笔记(19)—— 对象属性
    Javascript高级编程学习笔记(18)—— 引用类型(7)单体内置对象
  • 原文地址:https://www.cnblogs.com/niunan/p/6913658.html
Copyright © 2020-2023  润新知