`
niunan
  • 浏览: 719551 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

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="Log\Info\" />
      <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="Log\Error\" />
      <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="Log\Debug\" />
      <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目录下

分享到:
评论

相关推荐

    c#版本 Log4Net2.0.8版本,包含自己优化组件源码(真Log4Net)

    7. **异步日志写入**:在高并发环境中,为避免日志记录对性能的影响,Log4Net 提供了异步日志写入的能力,确保主业务流程不受阻塞。 8. **可插拔架构**:Log4Net 的设计使其易于扩展,你可以编写自定义的 Appender...

    log4net配置,日志纪录log4j的.NET版

    本文将深入探讨log4net的配置及其在.NET应用中的使用。 **1. log4net简介** Log4net是一个开源的日志组件,支持多种日志输出方式,如控制台、文件、数据库等。它具有灵活的配置机制,可以根据不同环境和需求轻松...

    Log4Net封装,类可直接引入使用,附demo,不同级别日志写不同文件

    这个封装库是为了简化Log4Net的使用,使得开发者无需深入理解其底层实现,即可方便地在项目中集成日志功能。 **1. Log4Net基本概念** - **Appender**: Appender是Log4Net的核心组件,负责将日志事件输出到特定目的...

    Log4net .net 4.0版本

    为了提高性能,log4net还支持异步日志记录,这意味着记录日志不会阻塞应用程序的执行流程,确保高并发环境下的稳定运行。 **7. 可扩展性** Log4net提供了丰富的API,开发者可以创建自定义的appender、layout和...

    log4net.ElasticSearch

    然而,使用log4net.ElasticSearch时,Logstash通常被绕过,因为log4net.ElasticSearch可以直接将日志写入Elasticsearch,减少了中间环节。 **Kibana** 是ELK Stack的可视化组件,提供了丰富的图表和仪表板,用于...

    log4net1.2.11.dll 和 log4net1.2.11源码

    2. **学习设计模式**:log4net使用了许多设计模式,如工厂模式(用于创建Appender实例)、观察者模式(用于事件通知)和装饰者模式(用于添加日志处理的功能)。 3. **定制和扩展**:通过研究源码,开发者可以更...

    log4net集合.zip

    1. **学习与研究**:查看源代码有助于理解log4net的内部工作流程,对于学习日志管理策略和设计模式非常有价值。 2. **定制与扩展**:如果标准库不能满足特定需求,开发者可以修改源代码以适应项目要求。 3. **调试与...

    Log4net 配置应用

    **Log4net配置应用** Log4net是一款广泛应用于.NET Framework中的日志记录工具,由Apache软件基金会开发。它提供了一种灵活且强大的机制,用于...通过学习和实践,我们可以更好地利用log4net来优化我们的开发流程。

    log4net源码

    通过研究 log4net-1.2.13 版本的源码,我们可以了解其实现细节,如日志事件的处理流程、配置解析机制以及各种 Appender 和 Layout 类的内部工作原理。这将有助于我们更高效地使用 log4net,并可能启发我们创建自己的...

    Log4net dll

    **Log4net DLL 文件使用说明** Log4net 是一个开源的日志记录框架,它为.NET应用程序提供了一种灵活且强大的日志记录机制。这个DLL文件是Log4net的核心组件,包含了许多类和方法,用于在应用程序中实现日志功能。在...

    log4net web,winform demo

    《log4net在Web和WinForm中的应用实例详解》 log4net是Apache软件基金会的Jakarta项目下的一款强大、灵活的日志记录工具,广泛...在实际项目中,参考提供的log4netDemo,可以更直观地学习和掌握log4net的使用方法。

    log4net-1.2.11-src

    3. **API接口**: log4net提供了一组易于使用的API,如`ILogger`接口,`ILog`接口以及`LogManager`类,便于开发者在代码中集成日志记录功能。 4. **日志级别**: 包括DEBUG、INFO、WARN、ERROR、FATAL等,开发者可以...

    log4net配置样题(Winform)

    10. **异常处理**:log4net可以很好地整合到异常处理流程中,记录错误和异常信息,有助于问题排查。 通过这个样题,初学者能够掌握如何在Winform应用中设置、配置和使用log4net,提升他们的日志管理和故障排查能力...

    incubating-log4net-1.2.9-beta.zip_ log4net.dll_beta_log4net

    1. **log4net.build** - 这可能是构建脚本,用于自动化编译和打包log4net的流程。 2. **build.cmd** - 这是一个命令行脚本,可能用于在Windows环境下执行构建过程。 3. **log4net.include** - 可能是包含log4net库的...

    Log4net.dll

    **Log4net.dll** 是一个广泛使用的开源日志记录框架,尤其在.NET开发环境中非常流行。这个类库为开发者提供了一种灵活、高效且可扩展的方式来记录应用程序中的各种事件和异常,有助于调试、性能分析以及问题排查。...

    log4net所有环境类型下载

    **正文** 日志框架在软件开发中扮演着至关重要的角色,它帮助开发者记录应用程序的运行情况,便于调试、性能分析和故障...这个压缩包的提供,使得开发者能够快速找到适合自己项目版本的`log4net`,简化了开发流程。

    log4net日志记录演示demo

    2. **初始化**:在程序启动时,使用`log4net.Config.XmlConfigurator.Configure()`方法初始化log4net。 3. **获取日志器**:使用`log4net.LogManager.GetLogger()`方法获取或创建日志器。 4. **记录日志**:通过...

    Topshelf实现windows服务开发,集成Log4Net

    本文将深入探讨如何使用Topshelf框架来创建Windows服务,并结合Log4Net进行日志记录。 Topshelf是一个轻量级的.NET库,它为开发者提供了一种简单的方式来封装一个可执行程序,使其能够作为Windows服务运行。这个...

    log4net.dll to vs2010 And Nunit.framework

    使用这些资源,开发者可以快速地在他们的`vs2010`项目中引入并使用log4net和NUnit,从而提升项目的质量和可维护性。 总的来说,`log4net.dll`和`NUnit.framework`是.NET开发中的强大工具,它们分别解决了日志管理和...

    Log4DEMO.zip

    在C#代码中,我们需要引入Log4net的命名空间,并使用`log4net.Config.XmlConfigurator.Configure();`初始化配置。然后,通过`ILog`接口创建一个日志实例,如`ILog log = LogManager.GetLogger(typeof(Program));`。...

Global site tag (gtag.js) - Google Analytics