有以下几种取值

级别

允许的方法

Boolean属性

优先级别

OFF

 

 

Highest

FATAL

void Fatal(...);

bool IsFatalEnabled;

 

 

RROR

void Error(...);

bool IsErrorEnabled;

 

 

WARN

void Warn(...);

bool IsWarnEnabled;

 

 

INFO

void Info(...);

bool IsInfoEnabled;

 

 

DEBUG

void Debug(...);

bool IsDebugEnabled;

 

 

ALL

 

 

 

Lowest

1 Logger的日志级别  

  在log4net框架里,通过设置配置文件,每个日志对象都被分配了一个日志优先级别。如果没有给一个日志对象显式地分配一个级别,那么该对象会试图从他的祖先继承一个级别值。

ILog接口的每个方法都有一个预先定义好了的级别值。正如你在表1看到的,ILog的Inof()方法具有INFO级别。同样的,以此类 推,Error()方法具有ERROR级别。当我们使用以上的任何一种方法时,log4net框架会检查日志对象logger的级别和方法的级别。只有当 方法的级别高于日志级别时,日志请求才会被接受并执行。

举例说明,当你创建了一个日志对象,并且把他的级别设置为INFO。于是框架会设置日志的每个Boolean属性。当你调用相应的日志方法时,框架会检查相应的Boolean属性,以决定该方法能不能执行。如下的代码:
 

Logger.Info("message");
Logger.Debug("message");
Logger.Warn("message");

对于第一种方法,Info()的级别等与日志的级别(INFO),因此日志请求会被传递,我们可以得到输出结果”message”。

对于第二种方法,Debug()的级别低于日志对象logger的日志级别(INFO),因此,日志请求被拒绝了,我们得不到任何输出。同样的,针对第三行语句,我们可以很容易得出结论。

在表1中有两个特殊的级别:ALL和OFF。ALL表示允许所有的日志请求。OFF是拒绝所有的请求。

你也可以显式地检查Logger对象的Boolean属性,如下所示:

if (logger.IsDebugEnabled)
{
  Logger.Debug("message");
}

 

2.2  Repository

Repository主要用于负责日志对象组织结构的维护。在log4net的以前版本中,框架仅支持分等级的组织结构(hierarchical organization)。这种等级结构本质上是库的一个实现,并且定义在log4net.Repository.Hierarchy 名字空间中。要实现一个Repository,需要实现log4net.Repository.ILoggerRepository 接口。但是通常并不是直接实现该接口,而是以log4net.Repository.LoggerRepositorySkeleton为基类继承。体系 库 (hierarchical repository )则由log4net.Repository.Hierarchy.Hierarchy类实现。

如果你是个log4net框架的使用者,而非扩展者,那么你几乎不会在你的代码里用到Repository的类。相反的,你需要用到LogManager类来自动管理库和日志对象。

2.3Appender

一个好的日志框架应该能够产生多目的地的输出。比如说输出到控制台或保存到一个日志文件。log4net 能够很好的满足这些要求。它使用一个叫做Appender的组件来定义输出介质。正如名字所示,这些组件把它们附加到Logger日志组件上并将输出传递 到输出流中。你可以把多个Appender组件附加到一个日志对象上。 Log4net框架提供了几个Appender组件。关于log4net提供的Appender组件的完整列表可以在log4net框架的帮助手册中找 到。有了这些现成的Appender组件,一般来说你没有必要再自己编写了。但是如果你愿意,可以从 log4net.Appender.AppenderSkeleton类继承。

2.4 Appender Filters

一个Appender 对象缺省地将所有的日志事件传递到输出流。Appender的过滤器(Appender Filters) 可以按照不同的标准过滤日志事件。在log4net.Filter的名字空间下已经有几个预定义的过滤器。使用这些过滤器,你可以按照日志级别范围过滤日 志事件,或者按照某个特殊的字符串进行过滤。你可以在API的帮助文件中发现更多关于过滤器的信息。

2.5 Layout

Layout 组件用于向用户显示最后经过格式化的输出信息。输出信息可以以多种格式显示,主要依赖于我们采用的Layout组件类型。可以是线性的或一个XML文件。 Layout组件和一个Appender组件一起工作。API帮助手册中有关于不同Layout组件的列表。一个Appender对象,只能对应一个 Layout对象。要实现你自己的Layout类,你需要从log4net.Layout.LayoutSkeleton类继承,它实现了ILayout 接口。

  3 在程序中使用log4net

 3.1. 在自己的项目中添加对 log4net.dll 的引用。
 3.2. 设置配置文件App.config

示例:

在.net开发中使用Log4Net组件 转摘<?xml version="1.0" encoding="utf-8" ?>
在.net开发中使用Log4Net组件 转摘
<configuration>
在.net开发中使用Log4Net组件 转摘    
<!--如果不用App.config作配置文件,则configSections节不是必须的。-->
在.net开发中使用Log4Net组件 转摘    
<configSections>
在.net开发中使用Log4Net组件 转摘        
<!--“type”属性的完整格式为:配置节处理器类名,程序集名称,Version=程序集版本号,Culture=区域信息,PublicKeyToken=公钥-->
在.net开发中使用Log4Net组件 转摘        
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
在.net开发中使用Log4Net组件 转摘    
</configSections>
在.net开发中使用Log4Net组件 转摘    
<log4net>
在.net开发中使用Log4Net组件 转摘        
<!--日志记录器logger,可以有多个-->
在.net开发中使用Log4Net组件 转摘        
<logger name="AppLogger">
在.net开发中使用Log4Net组件 转摘            
<level value="INFO" />
在.net开发中使用Log4Net组件 转摘            
<appender-ref ref="LogFileAppender" />
在.net开发中使用Log4Net组件 转摘            
<appender-ref ref="ConsoleAppender" />
在.net开发中使用Log4Net组件 转摘        
</logger>
在.net开发中使用Log4Net组件 转摘        
<logger name="Form1">
在.net开发中使用Log4Net组件 转摘            
<level value="DEBUG" />
在.net开发中使用Log4Net组件 转摘            
<appender-ref ref="LogFileAppender" />
在.net开发中使用Log4Net组件 转摘        
</logger>
在.net开发中使用Log4Net组件 转摘        
<!--所有logger的基,root的设置在所有logger中都起作用。
在.net开发中使用Log4Net组件 转摘        当在root和logger中重复设定相同的appender时,你会发现同一日志信息将被记录两次。
-->
在.net开发中使用Log4Net组件 转摘        
<!--<root>
在.net开发中使用Log4Net组件 转摘            <level value="WARN" />
在.net开发中使用Log4Net组件 转摘            <appender-ref ref="LogFileAppender" />
在.net开发中使用Log4Net组件 转摘            <appender-ref ref="ConsoleAppender" />
在.net开发中使用Log4Net组件 转摘        </root>
-->
在.net开发中使用Log4Net组件 转摘        
<!--一个appender可以由多个logger共用,当然一个logger可以指定多个appender。-->
在.net开发中使用Log4Net组件 转摘        
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
在.net开发中使用Log4Net组件 转摘            
<param name="File" value="App.log" />
在.net开发中使用Log4Net组件 转摘            
<param name="AppendToFile" value="true" />
在.net开发中使用Log4Net组件 转摘            
<layout type="log4net.Layout.PatternLayout">
在.net开发中使用Log4Net组件 转摘                
<param name="Header" value="[Header]\r\n" />
在.net开发中使用Log4Net组件 转摘                
<param name="Footer" value="[Footer]\r\n" />
在.net开发中使用Log4Net组件 转摘                
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] %X{auth} - %m%n" />
在.net开发中使用Log4Net组件 转摘            
</layout>
在.net开发中使用Log4Net组件 转摘            
<filter type="log4net.Filter.LevelRangeFilter">
在.net开发中使用Log4Net组件 转摘                
<param name="LevelMin" value="DEBUG" />
在.net开发中使用Log4Net组件 转摘                
<param name="LevelMax" value="FATAL" />
在.net开发中使用Log4Net组件 转摘            
</filter>
在.net开发中使用Log4Net组件 转摘        
</appender>
在.net开发中使用Log4Net组件 转摘        
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
在.net开发中使用Log4Net组件 转摘            
<layout type="log4net.Layout.PatternLayout">
在.net开发中使用Log4Net组件 转摘                
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] %X{auth} - %m%n" />
在.net开发中使用Log4Net组件 转摘            
</layout>
在.net开发中使用Log4Net组件 转摘        
</appender>
在.net开发中使用Log4Net组件 转摘    
</log4net>
在.net开发中使用Log4Net组件 转摘
</configuration>

3.3 代码里实现 

在.net开发中使用Log4Net组件 转摘          
  private void btnLog_Click(object sender, System.EventArgs e)
  {
   log4net.ILog log = log4net.LogManager.GetLogger("AppLogger");
   log.Debug("debug");
   log.Info("info");
   log.Warn("warn");
   log.Error("error");
   MessageBox.Show("生成日志成功!");
  }


相关文章: