1.引言
       日志对于应用程序来说,其重要性不言无喻,在编码时,可以帮助开发人员调试程序.在应用发布以后,可以跟踪应用程序的运行情况,必要时找出错误,或帮助以后审计.然而在应用程序中插入日志需要花费很多精力.一般来说大约4%的代码是专门用来记录日志的.所以即使对于一个不大的应用软件来说,也会插入上千条日志代码.在强调可重用组件开发的今天,除了自己的从头到尾开发一个可重用的日志操作类以外,对于.net应用程序,我们可以使用apache的log4net日志操作包(对于java,则有Log4j).官方网站:http://logging.apache.org/log4net/,最新版本为1.2.10.

2.实例
log4net可以通过程序来配置,当然通过配置文件来配置会更灵活.让我们来尝试一下在一个简单的应用MyApp中使用log4net.
如下(记得先引用log4net程序集):
log4net的使用using System;
log4net的使用
using log4net;
log4net的使用
using log4net.Config;
log4net的使用
namespace Com.Foo
}
运行结果如下:
log4net的使用

3.log4net简介
  3.1 Log4net的结构
log4net有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及 Layout(布局).

  3.1.1 Logger
Logger是log4net的核心组件,也是应用程序需要交互的主要组件,它代表了Log4net的日志记录器,它能够对日志信息进行分类筛选,就是决定什么日志信息应用被输出,什么日志信息应该被忽略。产生的日志消息并不直接显示,还要预先经过Layout的格式化处理后才会输出。
Log4net框架定义了一个ILog接口,所有的logger类都必须实现这个接口。如果你想实现一个自定义的logger,你必须首先实现这个接口。

ILog接口的定义如下:
public interface ILog
{
  void Debug(object message);
  void Info(object message);
  void Warn(object message);
  void Error(object message);
  void Fatal(object message);

//以上的每一个方法都有一个重载的方法,用来支持异常处理。
//每一个重载方法都如下所示,有一个异常类型的附加参数。
  void Debug(object message, Exception ex);

  // ...

//Boolean 属性用来检查Logger的日志级别
  bool isDebugEnabled;
  bool isInfoEnabled;
  //… 其他方法对应的Boolean属性

}

  3.1.2 日志的级别
log4net采用日志级别机制,简化了控制日志的输出步骤.
Fatal():输出ERROR级别的日志信息.
Error():输出ERROR级别的日志信息.
Warn() :输出WARN级别的日志信息.
Info() :输出INFO级别的日志信息.
Debug():输出Debug级别的日志信息.

 3.2 Appender(附着器)
Appender组件决定将日志信息输出到什么地方.比如控制台(Console),文件(File).

 3.3 Layout(布局)
Layout组件用来决定日志的输出格式.

4.使用配置文件来使用log4net
对于开始的例子可以如下:

log4net的使用using System;
log4net的使用
using System.IO;
log4net的使用
using log4net;
log4net的使用
using log4net.Config;
log4net的使用
namespace Com.Foo
}

相应的配置文件如下:

log4net的使用<?xml version="1.0" encoding="utf-8" ?>
log4net的使用
<configuration>
log4net的使用    
<configSections>
log4net的使用        
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
log4net的使用    
</configSections>
log4net的使用    
<!--log4net配置-->
log4net的使用    
<log4net>
log4net的使用        
<!-- A1 is set to be a ConsoleAppender -->
log4net的使用        
<appender name="A1" type="log4net.Appender.ConsoleAppender">
log4net的使用
log4net的使用            
<!-- A1 uses PatternLayout -->
log4net的使用            
<layout type="log4net.Layout.PatternLayout">
log4net的使用                
<conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
log4net的使用            
</layout>
log4net的使用        
</appender>
log4net的使用
log4net的使用        
<!-- Set root logger level to DEBUG and its only appender to A1 -->
log4net的使用        
<root>
log4net的使用            
<level value="DEBUG" />
log4net的使用            
<appender-ref ref="A1" />
log4net的使用        
</root>
log4net的使用    
</log4net>
log4net的使用
</configuration>

详细解释请参照:
http://logging.apache.org/log4net/release/manual/configuration.html






相关文章:

  • 2021-08-02
  • 2021-12-06
  • 2022-02-16
  • 2021-08-10
猜你喜欢
  • 2021-10-25
  • 2021-09-03
  • 2021-06-30
  • 2021-12-24
  • 2021-07-07
相关资源
相似解决方案