zoukankan      html  css  js  c++  java
  • log4net使用简明教程

    在项目当中经常会遇到各种各样的问题,如何可以尽快找到问题,那么就只能靠日志了,所以一个系统的日志是否完备合理就尤为重要。

    在日志管理插件中log4net相当流行,下面就简单说明一下使用方法。

    log4net的官方网址为http://logging.apache.org/log4net/download_log4net.cgi

    如果英文较好,可以直接看官方网站的教程,尤其是config部分的教程http://logging.apache.org/log4net/release/config-examples.html

    下面示例教程的源代码下载网址为:log4net示例工程  下载地址2

    1、引入log4net组件

    在Visual Studio中选中所需添加log4net的项目,点击鼠标右键,选择【管理NuGet程序包】

    输入关键字log4,查找对应程序包,并点击安装

    完成完成之后,你可以在引用中看到已经成功引用log4net

    2、配置log4net参数。由于配置文件内容比较多,详细内容可以下载示例工程代码,这里只是对有关错误日志信息的定义进行说明,其他类似

    <appender name="ERRORAppender" type="log4net.Appender.RollingFileAppender">
          <!-- 日志记录路径,此处为相对路径,即站点根目录 -->
          <file value="logs\ERROR\" />
          <!-- 日志记录方式,此处为追加模式 -->
          <appendToFile value="true" />
          <!-- 日志文件滚动模式,此处定义为复杂模式 -->
          <rollingStyle value="Composite" />
          <!-- 日志文件名规则,结合上一点配合使用,最终日志文件为logsERROR201320130920130927.log -->
          <datePattern value="yyyy\yyyyMM\yyyyMMdd'.log'" />
          <!-- 如下参数可直接使用,就不多做阐述,主要是上面的参数,其他教程没有 -->
          <staticLogFileName value="false"/>
          <maxSizeRollBackups value="100" />
          <maximumFileSize value="10MB" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ERROR"/>
            <param name="LevelMax" value="ERROR"/>
          </filter>
        </appender>

    3、完成配置之后就可以进行在程序中调用了,为了方便调用,我定义了一个日志记录类LogHelper,具体代码如下:

    using System;
    using log4net;
    
    namespace WebApplication1.ActionHelper
    {
    
        public class LogHelper
        {
            private ILog logger;
    
            public LogHelper(ILog log)
            {
                this.logger = log;
            }
    
            public void Info(object message)
            {
                this.logger.Info(message);
            }
    
            public void Info(object message, Exception e)
            {
                this.logger.Info(message, e);
            }
    
            public void Debug(object message)
            {
                this.logger.Debug(message);
            }
    
            public void Debug(object message, Exception e)
            {
                this.logger.Debug(message, e);
            }
    
            public void Warning(object message)
            {
                this.logger.Warn(message);
            }
    
            public void Warning(object message, Exception e)
            {
                this.logger.Warn(message, e);
            }
    
            public void Error(object message)
            {
                this.logger.Error(message);
            }
    
            public void Error(object message, Exception e)
            {
                this.logger.Error(message, e);
            }
    
            public void Fatal(object message)
            {
                this.logger.Fatal(message);
            }
    
            public void Fatal(object message, Exception e)
            {
                this.logger.Fatal(message, e);
            }
        }
    
        public class LogFactory
        {
            static LogFactory()
            {
            }
    
            public static LogHelper GetLogger(Type type)
            {
                return new LogHelper(LogManager.GetLogger(type));
            }
    
            public static LogHelper GetLogger(string str)
            {
                return new LogHelper(LogManager.GetLogger(str));
            }
        }
    }

    然后再具体页面中可以按照如下方式进行调用

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace WebApplication1
    {
        public partial class Default : System.Web.UI.Page
        {
            private ActionHelper.LogHelper log;
    
            protected void Page_Load(object sender, EventArgs e)
            {
                pageLoad();
            }
    
            private void pageLoad()
            {
                
                log = ActionHelper.LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.FullName + ":" + MethodBase.GetCurrentMethod().Name);
                log.Info("起始页面载入222");
                log.Error("起始页面载入");
            }
        }
    }

    4、如为了省事,需要对系统中所有的异常进行捕捉处理,则可以在Global.asax中进行定义

            protected void Application_Error(object sender, EventArgs e)
            {
                ActionHelper.LogHelper log = ActionHelper.LogFactory.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
                log.Error("未处理异常",HttpContext.Current.Server.GetLastError());
            }

    至此就设置完成了。

    全部设置下来其实还是比较简单的,如果实在不明白,可以直接下载:log4net示例工程 下载地址2 一看就明白了。

  • 相关阅读:
    ASP.NET + EF + SQL Server搭建个人博客系统新手系列(一):界面展示
    PHP中文乱码分类及解决办法大全
    分享一个根据具体的日期判断星座的PHP函数
    WHERE条件中or与union引起的全表扫描的问题
    linux下SVN CVS命令大全
    Ubuntu装完后要做的几件事
    Table被web编程弃用的原因
    PHP json_decode返回null解析失败原因
    powerpoint教程资料,PPT的
    一些matlab教程资源收藏,使用matlab编程的人还是挺多的
  • 原文地址:https://www.cnblogs.com/songhaipeng/p/3343606.html
Copyright © 2011-2022 走看看