引自log4net日志组件经验分享

我们在开发WEB项目的时候,经常会出现这样的情况:在本地调试都是正常的,但是部署到服务器上就不行了.一般出现这种情况很大一部分原因是因为服务的环境和本地不同,数据库的配置以及服务器软件环境.如何能够准确快速的判断问题的所在呢?本人总结了我平时用过的三种方法.

第一:凭经验.自己写的程序当然对于业务逻辑会非常清楚,页面执行到什么程度,什么地方可能会出错,凭经验也能猜出可能出错的地方.这种方法依赖于程序员的经验.

第二:让应用程序报出黄页,显示具体的错误信息.这种方法可以非常直观的看出程序的错误所在.但是如果是正式环境,程序是不可能让出现报黄页的情况,用户看到错误黄页对于管理者来说简直就是一种恶梦.一般都会跳到一个自定义的错误页,显示些系统错误之类的信息.这种情况第二种方法就行不通了.

第三:记录错误日志.利用try catch机制来捕获错误信息,然后将错误信息记录在日志中,供日后查找.显然第三种方法是最佳的方式,这种方式的实现,一般分为两种:

一种:自己写这种记录日志的组件.
   二种:利用第三方组件,例如:log4net.

这两种方式都是可行的,只要能够满足你的需求什么方式并不重要.利用第三方组件来说简单点,这里就说了log4net的应用.这个组件在几年前就有了,只是我并没有用.现在在项目是发现了它的存在,才知道它的重要性.首先来说下log4net组件的优点吧:

第一:支持多种记录日志的方式,可分为邮件形式,文本形式,数据库存储,等等.
   第二:在大并发的情况下很好的解决了写入同一文件的问题.
   第三:可根据日期以及文件大小来生成不同的日志文件.
   第四:配置相对简单,调用也方便.

园子里面已经有不少朋友写过log4net的文章,本人都是受教者,现在只是想更多的分享下使用log4net的经验.可以说是对它应用的一种唠叨吧.

要想利用log4net,我把它分为三步:

第一:在项目中引用log4net组件.
   第二:配置log4net,一般都写在web.config中.
   第三:调用部分.

      具体怎么配置,我不想多说,官方文档中已经写的太清楚了,也不是本文的重点.这里就我的经验和大家分享下:

经验一:配置文件不写在web.config中.

   理由:
          一个项目随着需求的变更,配置字节会特别多,不便查阅及维护.而且一但更改配置文件,就会引起IIS重启.

解决方案:我们可以利用以下方法来实现:
   log4net.Config.XmlConfigurator.ConfigureAndWatch(string filePath)
   它用来加载配置文件,这个配置文件可以放在任意地方,与WEB程序完成分离,更改此文件可以避免IIS的重启.

经验二:写一个调用log4net的公共类,根据不同的功能模块来生成不同的ILog接口.

   一般在项目中程序都会分成很多不同的模块,如果所有的模块的日志都写在一个目录里面,那在查阅的时候会是一种麻烦,我们可能根据不同的模块甚至更详细的功能来设置日志文档的存储路径.例如:娱乐新闻/weblog.txt,体育新闻/weblog.txt等等.

经验三:log4net并不一定要在程序发生错误时才记录日志,你可以把程序的业务逻辑处理过程都记录下来.

   例如有一个非常复杂的业务处理,里面可能会调用webservice,第三方接口什么的,此时如果程序出错,程序员在判断错误时往往会非常困难,你可以把执行过程都记录下来,这样当程序出错时你通过日志就知道在哪一步出问题了.记录这种日志时可以用级别最低的Info来记录,程序稳定后在配置文件中更改日志记录级别就可以避免在程序无错时也记录日志的负载了.

如果大家还有更多好的应用不妨拿出来分享下,共同进步.

log4net日志组件经验分享的更多相关文章

  1. 使用log4net日志组件经验分享

    常见步骤: 第一:在项目中引用log4net组件. 第二:配置log4net,一般都写在web.config中. 第三:调用部分.       具体怎么配置,大家可以参考博客其它博友写的,这里我只写我 ...

  2. .net core 使用log4net日志组件

    一个web站点必须要记录日志,否则哪里出错了,完全是黑娃找黑妹,两眼一抹黑. 最常用的就是log4net日志组件.我们可以通过扩展加入日志组件. 第一步:在项目中NuGet log4net包,即 In ...

  3. 快速入门系列--Log4net日志组件

    Log4net是阿帕奇基金会的非常流行的开源日志组件,是log4j的.NET移植版本,至今已经有11年的历史,使用方便并且非常稳定,此外很重要的一点是其和很多开源组件能很好的组合在一起工作,例如NHi ...

  4. C#控制台程序使用Log4net日志组件

    1.Log4net一般都不陌生,但是在配置上不同类型的项目又不相同的地方比如C#控制台程序和C# MVCWeb项目,拿控制台项目为例   项目源码在文章底部 2.首先创建一个控制台程序,引入Log4n ...

  5. Log4net日志组件使用

    一.简介 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题.经验表明,日 ...

  6. log4net日志组件

    转载:http://www.cnblogs.com/knowledgesea/archive/2012/04/26/2471414.html 一.什么是log4net组件 Log4net是基于.net ...

  7. C# 使用 log4net 日志组件

    一. 什么是 log4net  Apache log4net 库是帮助程序员将日志语句输出到各种输出目标的工具,它是从Java中的Log4j迁移过来的一个.Net版的开源日志框架.log4net 的一 ...

  8. C#组件系列———又一款日志组件:Elmah的学习和分享

    前言:好久没动笔了,都有点生疏,12月都要接近尾声,可是这月连一篇的产出都没有,不能坏了“规矩”,今天还是来写一篇.最近个把月确实很忙,不过每天早上还是会抽空来园子里逛逛.一如既往,园子里每年这个时候 ...

  9. 性能秒杀log4net的NLogger日志组件(附测试代码与NLogger源码)

    NLogger特性: 一:不依赖于第三方插件和支持.net2.0 二:支持多线程高并发 三:读写双缓冲对列 四:自定义日志缓冲大小 五:支持即时触发刷盘机制 六:先按日期再按文件大小滚动Rolling ...

随机推荐

  1. 学习boundingRectWithSize:options:attributes:context:计算文本尺寸

    oundingRectWithSize:options:context: 返回文本绘制所占据的矩形空间. - (CGRect)boundingRectWithSize:(CGSize)size opt ...

  2. [POJ 1003] Hangover C++解题

        Hangover Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 95164   Accepted: 46128 De ...

  3. WebApp开发入门

    web app 的技术平台很多,如adobe phonegap.sencha touch.appcan(国产).dcloud(国产)平台.我选择了dcloud平台,原因:简单,容易上手. web ap ...

  4. ubuntu linux下各种格式软件包的安装卸载

    http://www.cnblogs.com/mo-beifeng/archive/2011/08/14/2137954.html

  5. [转]Visual Studio调试之符号文件

    http://www.cnblogs.com/killmyday/archive/2009/10/14/1582882.html 前面在不能设置断点的检查步骤和Visual Studio调试之断点进阶 ...

  6. Spring_mvc的搭建以及实现

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring ...

  7. 【Luogu】P3327约数个数和(莫比乌斯反演+神奇数论公式)

    题目链接 真TM是神奇数论公式. 注明:如无特殊说明我们的除法都是整数除法,向下取整的那种. 首先有个定理叫$d(ij)=\sum\limits_{i|n}{}\sum\limits_{j|m}{}( ...

  8. LibreOJ2085 - 「NOI2016」循环之美

    Portal Description 给出\(n,m(n,m\leq10^9)\)和\(k(k\leq2000)\),求在\(k\)进制下,有多少个数值不同的纯循环小数可以表示成\(\dfrac{x} ...

  9. BZOJ4566 [Haoi2016]找相同字符 【后缀数组】

    题目 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两 个子串中有一个位置不同. 输入格式 两行,两个字符串s1,s2,长度分别为n1,n2.1 & ...

  10. bzoj 2437[Noi2011]兔兔与蛋蛋 黑白染色二分图+博弈+匈牙利新姿势

    noi2011 兔兔与蛋蛋 题目大意 直接看原题吧 就是\(n*m\)的格子上有一些白棋和一些黑棋和唯一一个空格 兔兔先手,蛋蛋后手 兔兔要把与空格相邻的其中一个白棋移到空格里 蛋蛋要把与空格相邻的其 ...