当前位置 > 首页 > Asp.net

Log4net 之 RollingFileAppender

2012-12-1 8:50:00来源:Asp.net

一旦我们的应用程序移植到生产环境中,就不能在对它进行调试了,这时候程序生成日志就尤为重要。.Net中包含了System.Diagnostics.Trace类,你可以为Trace添加listener,将Trace的内容输出至一个日志文件,但这样的做法会导致长时间以后日志文件过大。log4net是一个开源的日志组件,它包含了很多不同的appender,这些appender的作用是将日志的内容输出至不同的地方,比如AdoNetAppender(输出至数据库),ConsoleAppender(输出至控制台),EventLogAppender(输出至Windows Event Log),FileAppender(输出至一个日志文件)。本文中着重要介绍RollingFileAppender。顾名思义,它可以“滚动”地生成日志文件,也就是可以将日志输出至多个文件。“滚动”可以基于两种方式:(1)文件大小, 比如我们设定日志文件不能超过1M,那么每当一个日志文件的大小要超过1M时,RollingFileAppender就会产生一个新的日志文件;(2)日期,这种方式为每一天都产生一个日志文件。本文中后面我会基于这两种滚动方式,分别举出一个实例演示。

 

在我写本文的时候,log4net已经出到版本 1.2.11了(已经很就没有发布新版本了)。可以在http://logging.apache.org/log4net/ 下载源代码,也可以直接下载Binaries。在下载好Binaries后,在\log4net-1.2.11-bin-newkey\log4net-1.2.11\bin\net 文件夹中可以看到为不同.Net版本编译好的log4net.dll,其中包括 2.0, 3.0,3.5,和 4.0。选择你要使用的.Net版本,将log4net.dll 添加到你的项目引用中。下面来看一个Asp.Net的应用程序如何使用log4net以及log4net的配置文件。

 

首先在AssemblyInfo.cs中添加这样一行

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

然后代码如下

public class Logger
{
private static ILog logger = LogManager.GetLogger("mycompany.logger");

public static void LogDebug(string MethodName, string Message)
{
logger.Debug(MethodName
+ "::" + Message);
}

public static void LogInfo(string MethodName, string Message)
{
logger.Info(MethodName
+ "::" + Message);
}

public static void LogWarning(string MethodName, string Message)
{
logger.Warn(MethodName
+ "::" + Message);
}

public static void LogError(string MethodName, string Message)
{
logger.Error(MethodName
+ "::" + Message);
}

public static void LogFatal(string MethodName, string Message)
{
logger.Fatal(MethodName
+ "::" + Message);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
MethodBase methodBase
= new StackFrame().GetMethod();
string methodString = this.GetType().Name + "::" + methodBase.Name;
try
{
Logger.LogDebug(methodString,
"button is clicked");
}
catch (Exception ex)
{
Logger.LogError(methodString, ex.ToString());
}
}

上面的例子中使用了Logger类来封装log4net,在Button1的click事件处理器中,使用了Logger.LogDebug方法。该Asp.Net web application的配置文件web.config内容如下

<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<

  • 【原】使用CFileDialog之OFN_NODEREFERENCELINKS标记的注意事项

    2009-7-8 8:47:00

    在使用CFileDialog或GetOpenFileName调用打开文件对话框打开快捷方式文件时,如果OPENFILENAME结构体的Flags成员指定了OFN_NODEREFERENCELINKS

  • DevComponents TreeGX V2.2 来了

    2007-5-21 13:43:00

    DevComponents的TreeGX升级到了V2.2,上次提供 V2.1的PATCH时就介绍过 ,现在很多朋友期望能使用最新版本V2.2(虽然我目前还没有项目要用到它),这不,终于逮个时间把它处

  • 使用wiki作为个人知识库和对cnblogs的建议

    2007-4-5 13:30:00

    一直不太搞得明白wiki的用处,最近发现用wiki整理个人的知识库倒是个不错的选择。以前我是看到什么就写在TXT文件中,文件名字采用日期+标题方式,然后把文件放到SVN中,达到网络访问和目录同步的目

  • WSS3.0和MOSS2007对移动设备浏览器的支持

    2007-2-7 20:52:00

    摘要: Windows SharePoint Services 3.0 和 SharePoint Server 2007 增加了很多新功能,其中包括对移动设备浏览器的支持。本文将介绍如何通过移动设备

  • c#编程指南(十一) 平台调用P-INVOKE完全掌握, 指针大全

    2010-8-25 19:46:00

    作者: 香山飘雪 发表于 2010-08-25 14:29 原文链接 阅读: 516 评论: 1 这篇是讲述P-INVOKE中,应对各种指针的方法。包括普通指针,字符串指针,二级指针,指针

  • 数独解算器(ASP.NET 2.0)

    2007-1-26 15:36:00

    摘要: 数独游戏 在9x9的方格内进行, 分为3x3的小方格,被称为“区”。 数独游戏首先从已经填入数字的格子开始。 数独游戏的目的是根据下列规则,用1至9之间的数字填满空格: 每个数字在每一

  • 304 Your images from a database

    2009-7-1 16:25:00

    I was reading somewhere about some anecdotal evidence that Google doesnt like to index images that

  • Dealing with Profile Access in ASP.NET MVC Applications

    2011-12-24 10:49:00

    ASP.NET services such as Profile are available to MVC applications too and developers can make us

  • 泛型委托在项目中的应用

    2010-4-6 8:09:00

    阅读: 588 评论: 3 作者: 姜敏 发表于 2010-04-05 20:10 原文链接 感悟: 对泛型委托基本属于有点认识,但从来没真正在项目中使用过,有时感觉没有合适的场景应用

  • One More Week Until Give Camp 2009

    2009-7-11 12:42:00

    To-do lists are being checked off and the final bits of organizing are almost complete for this yea