• 注册
当前位置:1313e > 默认分类 >正文

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文件中加入如下内容:

 
   

 

 
   
 


   
   
     
     
     
     
     
     
     
       
     

     
       
       
     

   

   
   
     
     
     
     
     
     
     
       
     

     
       
       
     

   

   
   
     
     
     
     
     
     
     
       
     

     
       
       
     

   

   
     
     
     
     
     
   

 

 

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目录下

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录