当前位置 > 首页 > Asp.net

Log4net 之 RollingFileAppender

12/1/2012 8:50:00 AM来源: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>
<