log4net是一个非常完善的日志组件. 有着强大的可配置性. 有助于提高开发效率 。log4net是apache组织开发的日志组件, 同其姐妹log4j一样, 
是一个开源项目. 可以以插件的形式应用在你的系统中. 下面仅说明如何应用在web forms项目中. 做为主要的日志输出组件.

第一步:应该下载log4net.dll并引入到你的项目中,下载见附件

第二步:修改你的global.asa.cs. 配置application对象启动的时候加载log4net配置
protected void Application_Start(Object sender, EventArgs e)
{
log4net.Config.DOMConfigurator.Configure();
}

第三步:在web.cofig根节点 configuration 中加入如下section
<configSections>
<section name="log4net" 
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>

第四步:在web.cofig增加配置节点
<log4net>
<appender name="RollingLogFileAppender" 
type="log4net.Appender.RollingFileAppender">
<param name="File" value="E:\\Log\\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p 
&lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
此节点将在参数 <param name="File" 所指定的目录下生成以日期为文件名的日志文件,请自行根据实际情况修改。
如: 2005年2月3日,则在目录下生成 20050203.htm 的日志文件。

第五步:在程序中写入日志
以下例子是在Global.asax的 Application_Error 方法里捕捉所有异常写入当天日志。在其他页面的代码里页可以这么写入。

先实例化:private static readonly log4net.ILog log = 
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
然后在Application_Error方法中写自定义消息:
protected void Application_Error(Object sender, EventArgs e)
{
log.Info("\r\n客户机IP:"+ Request.UserHostAddress +"\r\n<BR>错误地址:"+ Request.Url, 
Server.GetLastError());
}

经过以上5个步骤就能够在很短的时间内完成站点的异常日志工作,经常查看日志可以发现我们程序中的不足而且可以发现一些恶意访问的记录,然后做出相应的措施。

补充一下,如果需要用log4net同时记录操作日志和异常日志,并且希望把他们存储在不同的地方(文件或者数据库),可以这样处理,这里以文件为例。

首先更改配置文件
增加logger配置节,
<logger name="logerror">

<level value="ERROR" />

<appender-ref ref="RollingLogFileAppender" />

</logger>

<logger name="loginfo">

<level value="INFO" />

<appender-ref ref="InfoAppender" />

</logger>根据需要可以定义多个,
设置各个log对应的级别,并补充每个appender所对应的节点
<appender name="RollingLogFileAppender"

type="log4net.Appender.RollingFileAppender">

<param name="File" value="F:\\AppLog\\" />

<param name="AppendToFile" value="true" />

<param name="MaxSizeRollBackups" value="100" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />

<param name="RollingStyle" value="Date" />

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] 
&lt;BR&gt;%n异常级别:%-5p

&lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />

</layout>

</appender>

<appender name="InfoAppender"

type="log4net.Appender.RollingFileAppender">

<param name="File" value="F:\\App\\" />

<param name="AppendToFile" value="true" />

<param name="MaxSizeRollBackups" value="100" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />

<param name="RollingStyle" value="Date" />

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n日志时间:%d [%t] 
&lt;BR&gt;%n日志级别:%-5p

&lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />

</layout>

</appender>

在cs文件里定义多个log实例,
public static readonly log4net.ILog loginfo = 
log4net.LogManager.GetLogger("loginfo");

public static readonly log4net.ILog logerror = 
log4net.LogManager.GetLogger("logerror");

作为操作日志和异常日志的操作对象,
根据级别,进行操作
if(loginfo.IsInfoEnabled)
loginfo.Info("新增文章成功!");

if(logerror.IsErrorEnabled)
logerror.Error("新增文章出错!",se);

参考文档

http://www.ondotnet.com/pub/a/dotne...net.html?page=1

配置的样例
http://logging.apache.org/log4net/r...g-examples.html

生成文件的格式有三种
1。按日期
2。按文件大小
3。同时按日期和文件大小

关键节点
<param name="MaxFileSize" value="10240" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMddHH&quot;.htm&quot;" />

<param name="RollingStyle" value="Composite" />

文件大小的单位是字节,

原文地址:http://www.cnblogs.com/monthkey/archive/2005/04/30/148278.html

用log4net快速构建asp.net 异常日志的更多相关文章

  1. 快速构建ASP.NET MVC Admin主页

    前言 后台开发人员一般不喜欢调样式,搞半天样式出不来,还要考虑各种浏览器兼容,费心费力不讨好,还好互联网时代有大量的资源共享,避免我们从零开始,现在就来看怎么快速构建一个ASP.NET MVC后台管理 ...

  2. Log4Net异常日志记录在asp.net mvc3.0的应用

    前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...

  3. Log4Net异常日志记录在asp.net mvc3.0的应用(转载)

    这篇博客写的很好:http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html 前言 log4net是.Net下一个非常优秀的开源 ...

  4. ASP.NET全局错误处理和异常日志记录以及IIS配置自定义错误页面

    应用场景和使用目的 很多时候,我们在访问页面的时候,由于程序异常.系统崩溃会导致出现黄页.在通常的情况下,黄页对于我们来说,帮助是极大的,因为它可以帮助我们知道问题根源,甚至是哪一行代码出现了错误.但 ...

  5. 转:使用log4net完成程序异常日志记录(使用SQLite数据库记录和普通文本记录)

    http://www.cnblogs.com/kyo-yo/archive/2010/06/11/use-log4net-to-log-exception.html 在前端时间开发的时候由于需要将异常 ...

  6. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(11)-系统日志和异常的处理①

    系列目录 系统需要越来越自动化,我们需要引入日志记录和异常捕获管理员的操作记录需要被记录,看出哪些模块是频繁操作,分析哪些是不必要的功能,哪些是需要被优化的.系统的异常需要被捕获,而不是将系统出错显示 ...

  7. 使用Asp.net WebAPI 快速构建后台数据接口

    现在的互联网应用,无论是web应用,还是移动APP,基本都需要实现非常多的数据访问接口.其实对一些轻应用来说Asp.net WebAPI是一个很快捷简单并且易于维护的后台数据接口框架.下面我们来快速构 ...

  8. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  9. [外包]!采用asp.net core 快速构建小型创业公司后台管理系统(六.结语)

    到这里就结束了,真的结束了,源码会在文末分享! 另外录了两个视频,对这个系统进行了演示! 做有意义的事情,原此生无悔! 视频地址:使用asp.net core 快速构建权限管理模块1 使用asp.ne ...

随机推荐

  1. product of大数据平台搭建------CM 和CDH安装

    一.安装说明 CM是由cloudera公司提供的大数据组件自动部署和监控管理工具,相应的和CDH是cloudera公司在开源的hadoop社区版的基础上做了商业化的封装的大数据平台. 采用离线安装模式 ...

  2. linux 的有用的网站

    从windows下移到linux下还有很长的路走阿,慢慢记录一些有用的网站吧 http://www.yolinux.com/ http://linux.die.net/

  3. “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第五篇(用户管理之“用户权限分配”)

    一.在做权限分配之前,首先先了解“ZTree”这个插件,我的这个系统没有用Jquery-EasyUI的Tree.用的是”ZTree“朋友们可以试试,也很强大.点击下载ZTree插件.       1. ...

  4. 微信小程序自学第四课:数据绑定

    WXML 中的动态数据均来自对应 Page 的 data. 一.简单绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于: 1.内容 <view> {{ mess ...

  5. NPOI office操作

    写excel FileStream file = new FileStream(@"test.xls",FileMode.Create); hssfworkbook.write(f ...

  6. Ubuntu16.4下安装Chrome浏览器以及Chromedriver

    一.Chrome浏览器的安装 对于谷歌Chrome32位版本,使用如下链接: wget https://dl.google.com/linux/direct/google-chrome-stable_ ...

  7. 输入类型<input type="number"> / input标签的输入限制

    输入限制 属性 描述 disabled 规定输入字段应该被禁用. max 规定输入字段的最大值. maxlength 规定输入字段的最大字符数. min 规定输入字段的最小值. pattern 规定通 ...

  8. DNS 网关 路由 交换机 网桥 协议 服务器 这些都是什么关系?

    来源:知乎 服务器:为你提供服务的机器.相当于马路边上的各种店面.虽然理论上任何一户人家都能开店为你提供服务,但是因为各种硬件资源限制而不适合开店.比如:小区道路比较窄(宽带带宽比较窄).家里地方太小 ...

  9. 编写自定义GenericServlet

    用途: 编写自定义GenericServlet类后,子类只需继承这个类,就可以直接使用ServletConfig的config对象和ServletConfig接口的方法,而不需要init()方法获取c ...

  10. js千分位处理

    一.去掉千分位 function removeThousands(num) { var x = num.split(','); return parseFloat(x.join("" ...