log4net是Apache开发的一个用于.NET应用程序的logger工具,log4net是开源的,使用Apache License, Version 2.0开源协议。

可以到这里下载log4net: http://logging.apache.org/log4net/download.html

下面来具体介绍下如何使用log4net:

1. 将log4net.dll这个assembly加到项目的引用中。

2. 初始化configuration file, 指定要使用的configuration类型 ,支持的类型有:XmlConfigurator 和 DOMConfigurator

例如:初始化一个XmlConfigurator并指定当前项目的config文件为provider:

log4net.Config.XmlConfigurator.Configure();

XmlConfigurator.Configure()这个方法有很多个重载,可以在重载方法的参数中指定config文件的路径。

如果是Web Applciation,可以在Global.asax的Application_Start方法中作这个初始化,这样整个Web Application就不需要在每次使用log4net的时候都初始化configuration了。

例如,我的Global.asax文件中Application_Start内容是这样的:

protected void Application_Start(object sender, EventArgs e)
{
        //The Log4net component needs initial configure at the start of the application.
        log4net.Config.XmlConfigurator.Configure();
}

3. 修改项目的config文件:

a) 把<section name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler, log4net” />加入到<configSections>与</configSections>之间。

b) 添加下面的示例到<configuration>与</configuration>中:

  <log4net>
    <appender name="LogUtility" type="log4net.Appender.RollingFileAppender">
      <file value="LOG.txt"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="10"/>
      <maximumFileSize value="512KB"/>
      <rollingStyle value="Size"/>
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <header value="[Started]&#xA;"/>
        <footer value="[Stopped]&#xA;"/>
        <conversionPattern value="%date [%thread] %-5level - %message%newline"/>
      </layout>
    </appender>
    <root>
      <!-- Possible levels: DEBUG, INFO, WARN, ERROR, FATAL, ALL-->
      <!-- logger will only accept event that are at this level or above.  -->
      <level value="ALL"/>
      <appender-ref ref="LogUtility"/>
    </root>
  </log4net>

这里使用RollingFileAppender将需要log的信息写入文件中,log4net还有其它很多的Appender:

AdoNetAppender
AspNetTraceAppender
BufferingForwardingAppender
ColoredConsoleAppender
ConsoleAppender
EventLogAppender
FileAppender
ForwardingAppender
MemoryAppender
NetSendAppender
OutputDebugStringAppender
RemotingAppender
RollingFileAppender
SmtpAppender
SmtpPickupDirAppender
TraceAppender
UdpAppender

可以到http://logging.apache.org/log4net/release/config-examples.html查阅如何使用这些Appender。

这里需要注意

<level value=”ALL”/>,这个配置很关键,它决定了哪些级别的信息会被log,只有那些比设置的级别高的level才会被log。

4. 在代码中使用log4net:

try
{
  ......
}
catch(Exception ex)
{
  log4net.ILog logger = log4net.LogManager.GetLogger("LogUtility");
  logger.Error("nn"+DateTime.Now.ToLongDateString(), ex);
}

这里log4net.LogManager.GetLogger(“LogUtility”)是获取在配置文件中名为LogUtility的logger,
logger.Error(…)用来将exception写入到配置文件中定义的Appender中。

总结:

1. log4net的功能很强大,其自身带了很多我们常用的几种Appender,借助自带的Appender,我们已经可以实现绝大部分的log功能,当然,我们也可以实现自己的Appender,需要实现log4net.Appender.AppenderSkeleton这个abstract类

2. 可以为同一个需要log的信息使用两个或者以上的Appender,例如:可以同时使用File和Database作为Appender。

这篇文章只是简单的介绍了如何在项目中使用log4net,更多的说明及SDK请移驾到log4net的官方网站

如果你的项目中有更深层次的需求请在此留言或者直接联系我

相关文章:

  1. DotNet下NUnit的使用(2)—- 第一个NUnit工程
  2. Update the application configuration file automatically in C#
  3. JQuery Ajax发送GET请求乱码的解决办法
  4. 周末了,发上来给大家也娱乐一下
  5. How to use Sql Azure
  6. DotNet下NUnit的使用(1)—- NUnit入门
  7. 使用InternalsVisibleTo给assembly添加“友元assembly”
  8. 网络第一美人思翻唱倒带
  9. 2009年之最
  10. 性能: 字符串倒序算法 (C# version)