zoukankan      html  css  js  c++  java
  • 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目录下

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/niunan/p/6913658.html
Copyright © 2011-2022 走看看