当前位置 > 首页 > 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>
<

  • 菜鸟编三维地质建模系统-整体思路

    2009-4-23 11:01:00

    接手三维地质建模系统编制的项目时,我只是一个很菜鸟的业余编程爱好者,但我对于这个项目很感兴趣,不管结果如何,参与这个项目的过程就很有意思。 语言选择:c++。选择c++是考虑到c++可以向下

  • Why goto Still Exists in C#

    2009-6-2 7:58:00

    Developers, Software Engineers, and Programmers are logical, rational, reasonable people right? Sur

  • .NET中的设计模式——利用空模式构造安全代码

    2010-9-4 19:38:00

    作者: 倪大虾 发表于 2010-09-04 16:24 原文链接 阅读: 210 评论: 3 题记: 《.NET中的设计模式》系列随笔停下有一段时间了,一则总结个东西不容易,另一

  • 致歉

    2007-4-2 22:49:00

    今天晚上20:00~21:00,由于未知原因造成的IIS同时连接过多,达到了设置的最大连接数5000,造成网站不能正常访问,给大家带来了麻烦,请大家谅解! dudu 2007-04-02

  • PHP和ASP.NET

    2009-4-23 15:07:00

    微软最近更新了对PHP URL重写的支持,即提供了导入原Apache中的配置文件的功能。 可以看到PHP已经在逐步走进IIS的布局中,而本来非常难以配置的PHP,也提供了很多简易化的安装部署脚

  • Windows Embedded CE 6.0 Internals (1)

    2009-7-19 0:56:00

    最近在学习Windows Embedd CE 6.0和Windows桌面系统内部一些知识,这篇文章是对部分内核知识的整理和总结,跟各位博客园的朋友分享。Windows Embedded CE 6.0

  • ASP.NET MVC 3 Beta: Using WebMail helper to send e-mail

    2010-10-21 2:53:00

    This far I have blogged about WebImage and Chart helpers. Now let’s see another new helper – We

  • 信息系统开发平台OpenExpressApp -如何部署OEA应用

    2009-11-23 16:22:00

    阅读: 3 评论: 0 作者: 快乐学习 发表于 2009-11-23 16:19 原文链接   BloodyAngel 把智能部署写的比较清楚了 《信息系统开发平台OpenExpr

  • Team Foundation Power Tools 1.2发布

    2007-2-26 3:09:00

    摘要: 微软发布了Team Foundation Power Tools 1.2。这个工具集共有5个模块。它包括了一些非常有用的VSTS客户端应用,并且直接集成于VS IDE中,能够使你在VSTS的

  • 命名与抽象

    2009-9-17 11:35:00

    摘要: 好的名字总是能为代码的可读性做出重大贡献,而这种贡献是通过对事物进行抽象实现的。想想一下我们平常说话时所用的语言,比如说“我家的狗跑的很快”,“家R