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

  • 项目经理成长日记(7)——说是细,做的粗

    2009-4-1 8:06:00

    摘要: 估计绝大部分的公司都在提倡一个口号:“注重细节。”但是往往是口号容易行,行动却是千辛万苦,何谓细节?也就是自身工作的每一个环节、每一道流程的琐碎小事,而这些小事又常常容易被人忽略。有很

  • asp.net mvc 2.0+Silverlight播放器开发的TeamVideo视频播放网站--系列1

    2010-8-31 0:08:00

    作者: Nic Pei 发表于 2010-08-30 21:24 原文链接 阅读: 345 评论: 0 背景:经常有一些电影大家想一起分享,为了照顾到很多同事,以及大家来交流评论电影,我

  • 非关系型数据库 Is SaaS最佳存储介质

    2010-7-10 12:27:00

    作者: freemao 发表于 2010-07-10 00:13 原文链接 阅读: 427 评论: 4   SaaS以租赁的方式向用户提供软件服务。中小型企业在资金和信息化人才缺乏的情况下

  • ModelBinder——ASP.NET MVC Model榜定的核心

    2012-5-21 8:31:00

    Model的绑定体现在从当前请求提取相应的数据绑定到目标Action方法的参数。通过前面的介绍我们知道Action方法的参数通过ParameterDescriptor来描述,ParameterDes

  • WPF Page页面导航栏的隐藏

    2009-12-3 15:54:00

    阅读: 495 评论: 0 作者: 柯南 发表于 2009-12-03 12:04 原文链接 在WPF程序中,我们可能不需要Page页面的导航栏,今天研究了好久,发现了办法 办法如下

  • 来谈谈MRO

    2009-8-11 23:22:00

    什么是MRO?呵呵,在这里所说的MRO可不是指MBA里的Maintenance、Repair and Operations(工作设施、设备进行保养、维修),而是我自己缩写的一个名词。现在到处都是简写

  • Microsoft Virtual Earth Silverlight Map Control (CTP)快速上手

    2009-3-29 15:10:00

    摘要: 在MIX08上,Chris Pendlenton演示了一款Silverlight地图控件,给大家留下了深刻的印象。时隔一年,在MIX09上,微软终于发布了这款名叫“Virtual Earth

  • CodeMash 2.0.1.0 REST Interfaces

    2009-11-17 12:31:00

    This years CodeMash website has two URIs that expose CodeMash Information: http://www.codem

  • Using .Net 3.5 and C# 3.0 features in T4 templates

    2009-6-3 22:00:00

    The T4 templates are compiled against .Net Framework 2.0 by default and it will be restricted to us

  • A realistic log4net config

    2007-3-16 14:22:00

    Most log4net config file examples show the simplest case. Here is a more realistic example of a pro