关键词不能为空

当前您在: 主页 > 英语 >

log4net使用手册

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-17 23:37
tags:

-

2021年2月17日发(作者:受压)


---------


只为成功找方法,不为失败找借口,最成功的人,是 最重视找方法的人。


--------


☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆




==== ====================== ===================================



log4net


使用手册




1


简介





1.1Log4net


的优点:




几乎所有的大型应用都会有自己的用于跟踪调试的

< p>
API



因为一旦程序被部署以后,


就不太


可能再利用专门的调试工具了。


然而一个管理 员可能需要有一套强大的日志系统来诊断和修


复配置上的问题。





经验表明,


日志记录往往是软件开发周期中的重要组成部分。


它具有以下几个优点:


它可以


提供应用程序运行时的精确环境,


可供开发人 员尽快找到应用程序中的


Bug



一旦 在程序中


加入了


Log


输出代码,程 序运行过程中就能生成并输出日志信息而无需人工干预。另外,


日志信息可以输出到不同 的地方(控制台,文件等)以备以后研究之用。





Log4net


就是为这样一个目的 设计的,用于


.NET


开发环境的日志记录包。





1.2Log4net


的安装:





用户可以从


/log4net/


下载


log4net

的源代码。解压软件包后,在解压



src


目录下将



载入


Visual


Studio .NET


,编译后可以得到


。用户要在


自己的程序里加入日志功能,只需将

< p>


引入工程即可。






2 Log4net


的结构





log4net


有四种主要的组件 ,


分别是


Logger


(记录器)


, Repository


(库)


, Appender


(附着器)


以及



Layout


(布局)


.




2.1Logger




2.1.1






Logger


接口





Logger

是应用程序需要交互的主要组件,它用来产生日志消息。产生的日志消息并不直接


显 示,还要预先经过


Layout


的格式化处理后才会输出。





Logge r


提供了多种方式来记录一个日志消息,你可以在你的应用程序里创建多个


Logger



每个实例化的


Logger


对象都被


log4net


框架作为命名实体


(named entity)


来维护。< /p>


这意味着为


了重用


Logger


对象,你不必将它在不同的类或对象间传递,只需要用它的名字为参数调用


就可以了。


log4net


框架使用继承体系,继承体系类似 于


.NET


中的名字空间。也就是说,如


果有两个


logger,


分别被定义为


a.b.c



a.b


,那么我们说< /p>


a.b



a.b.c

的祖先。每一个


logger


都继承了祖先的属性





Log4net


框架定义了一个


ILog


接口,所有的


logger


类都必须实现这个接口。如果你想实现

< p>
一个自定义的


logger


,你必须首先实现这个 接口。你可以参考在


/extension


目录下的几个例


☆☆☆☆☆☆☆☆可以编辑的


WORD


文档 ★知识成就未来☆☆☆☆☆☆☆☆



---------


只为成功找方法,不为失败找借口,最成功的人,是最重视找方法的人。


--------


☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆




==== ====================== ===================================



子。






ILog


接口的定义如下:



Log4net


框架定义了一个叫做


LogMa nager


的类,用来管理所有的


logger


对象。它有一个


GetLogger()


静态方法,用 我们提供的名字参数来检索已经存在的


Logger


对象。


如果框架里不存在该


Logger


对象,< /p>


它也会为我们创建一个


Logger


对象 。


代码


如下所示:






1public interface ILog




2{




3




void Debug(object message);




4




void Info(object message);




5




void Warn(object message);




6




void Error(object message);




7




void Fatal(object message);




8//


以上的每一个方法都有一个重 载的方法,用来支持异常处理。





9//


每一个重载方法都如下所示,有一个异常类型的附加参数 。




10




void Debug(object message, Exception ex);



11




//




12




//Boolean


属性用来检查


L ogger


的日志级别




13




/ /


(我们马上会在后面看到日志级别)




14




bool isDebugEnabled;



15



bool isInfoEnabled;



16



//



< /p>


其他方法对应的


Boolean


属性




17}



18


19


log = ger(




通常来说,我们会以类(


class


)的类型(


type


)为参数来调用


GetLogger()


,以 便跟踪我们正


在进行日志记录的类。


传递的类

< br>(class)


的类型


(type)

可以用


typeof(Classname)


方法来获得,



者可以用如下的反射方法来获得:





rentMethod().DeclaringType




尽管符号长了一些,


但是后者可以用 于一些场合,


比如获取调用方法的类


(class)

< p>
的类型


(type)







2.1.2






日志的级别






正如你在


ILog


的接口中看到的一样,有五种不同的方法可以跟踪一个应用程序。事实上,


这五种方法是运作在


Logger


对象设置 的不同日志优先级别上。这几种不同的级别是作为常


量定义在


< /p>


类中。你可以在程序中使用任何一种方法。但是在最后的发布中


☆ ☆☆☆☆☆☆☆可以编辑的


WORD


文档★知识成就未来☆☆☆ ☆☆☆☆☆



---------


只为 成功找方法,不为失败找借口,最成功的人,是最重视找方法的人。


--------


☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆




==== ====================== ===================================



你也许不想让所有的代码来浪费你的


CPU


周 期,


因此,


框架提供了


7


种级别和相应的


Boolean


属性来控制日志记录 的类型。





Level


有以下几种取值




级别





允许的方法





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

< br>框架里,通过设置配置文件,每个日志对象都被分配了一个日志优先级别。如果


没 有给一个日志对象显式地分配一个级别,那么该对象会试图从他的祖先继承一个级别值。





ILog


接口的每个方法都有一个预先定义好了的级别值。


正如你在表


1


看到的,


ILog


< br>Inof()


方法具有


INFO


级别。同样的,以此类推,


Error()


方法具有

< p>
ERROR


级别。当我们使用以上


的任何一种方法 时,


log4net


框架会检查日志对象


logger


的级别和方法的级别。只有当方法


的级别高于日 志级别时,日志请求才会被接受并执行。





举例说明,当你创建了一个日志对象,并且把他的级别设置为


INFO


。于是框架会设置日志


的每个


Boolean


属性。当你调用相应的日志方法时,框架会检查 相应的


Boolean


属性,以决


定该 方法能不能执行。如下的代码:




(



(



(



☆☆☆☆☆☆☆☆可以编辑的


WORD


文档★知识成就未来☆☆☆☆☆☆☆☆


---------


只为成功找方法,不为失败找借口, 最成功的人,是最重视找方法的人。


--------


☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆




==== ====================== ===================================




对于第一种方法,


Info()


的级别等与日志的级别(


INFO



,因此日志请求会被传递,我们可


以得到输出结果”

< br>message







对于第二种方法,


Debug()


的级别低于日志对象


logger


的日志级别


(INFO)


,因此,日志请求


被拒绝了,我们得不到任何输出。同样的,针对第三行语句,我们可以很容易得出结论。





在表< /p>


1


中有两个特殊的级别:


ALL



OFF



ALL


表示允许所有的日志请求。


OFF


是拒绝所


有的请求。





你也可以显式地检查


Logger< /p>


对象的


Boolean


属性,如下所示:




if (gEnabled)



{






(



}





2.2Repository



< /p>


Repository


主要用于负责日志对象组织结构的维护。在


log4net


的以前版本中,框架仅支持

分等级的组织结构


(hierarchical organization)


。这种等级结构本质上是库的一个实现,并且定


< br>在


chy












Repository







rReposi tory




。但

< br>是通


常并


不是


直接实

< p>
现该接


口,


而是



RepositorySkeleton


为基类继承。体系库



(hierarchical


repository


)




chy


类实现。





如果你是个


log4net


框架的使用者,而非扩展者,那么你几乎不会在你的代码里用到


Repository


的类。相反的,你需要用到

LogManager


类来自动管理库和日志对象。





2.3Appender




一个好的日志框架应该能够产生多 目的地的输出。


比如说输出到控制台或保存到一个日志文


件。< /p>


log4net


能够很好的满足这些要求。它使用一个叫做


Appender


的组件来定义输出介质。


正如名字所示,这些组件把它们附加到


Logger


日志组件上 并将输出传递到输出流中。你可


以把多个


Appender


组件附加到一个日志对象上。



Log4n et


框架提供了几个


Appender


组件。


关于


log4net


提供的


Appender


组件的完整列表可以在


l og4net


框架的帮助手册中找到。有了


这些现成的


Appender


组件,一般来说你没有必要再自己编写了。但是如果你 愿意,可以从


erSkeleton


类继承。

< br>





2.4Appender Filters




一个


Appender

< p>
对象缺省地将所有的日志事件传递到输出流。


Appender

< p>
的过滤器


(Appender


Filters)


可以按照不同的标准过滤日志事件。在



的名字空间下已经有几个预定


义的过滤器。


使用这些过滤器,< /p>


你可以按照日志级别范围过滤日志事件,


或者按照某个特殊


的字符串进行过滤。你可以在


API


的帮助文 件中发现更多关于过滤器的信息。




☆☆☆☆☆☆☆☆可以编辑的


WORD


文档★知识成就未来☆☆ ☆☆☆☆☆☆



---------


只 为成功找方法,不为失败找借口,最成功的人,是最重视找方法的人。


--------


☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆




==== ====================== ===================================




2.5Layout




Layout


组件用于向用户显示 最后经过格式化的输出信息。输出信息可以以多种格式显示,


主要依赖于我们采用的


Layout


组件类型。可以是线性的或一个


XML


文件。


Layout


组件和< /p>


一个


Appender


组件一起工作。< /p>


API


帮助手册中有关于不同


Layou t


组件的列表。


一个


Appender











Layout



象< /p>









< p>
Layout








Skele ton


类继承,它实现了


ILayout


接口。





3


在程序中使用


log4net




在开始对你的程序进行日志记录前 ,需要先启动


log4net


引擎。这意味着你需要先配置前面


提到的三种组件。


你可以用两种方法来设定配置:


在单独的文件中设定配置或在代码中定义


配置。





因为下面几种原因,推荐在一个单独的文件中定义配置:





l


你不需要重新编译源代码就能改变配置;





2


你可 以在程序正运行的时候就改变配置。


这一点在一些


WEB


程序和远程过程调用的程序


中有时很重要;





考虑到第一种方法的重要性,我们 先看看怎样在文件中设定配置信息。





3.1


定义配置文件





配置信息可以放在如下几种形式文件的一种中。





在程序的配置文件里,如




.



< /p>


在你自己的文件里。文件名可以是任何你想要的名字,如




.



< p>
log4net


框架会在相对于


rectory


属性定义的目录路径下查


找配置文件。框架在配置文件里要查找 的唯一标识是



标签。一个完整的配置文件< /p>


的例子如下:







1




2




3




4








5type=




6



log4net- net-1.0




7



☆☆☆☆☆☆☆☆可 以编辑的


WORD


文档★知识成就未来☆☆☆☆☆☆☆☆



---------


只为成功找方法,不为 失败找借口,最成功的人,是最重视找方法的人。


--------


☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆




==== ====================== ===================================




8




9







10









11









12









13







14







15









16







17







18




type=



19









20









21









22











23











24











25 value=



26










/>



27









28









29











30











31









32







33







34





type=



35









36











37 value=



38









/>



39









40







41



42



43


44


你可以直接将上面的文本 拷贝到任何程序中使用,


但是最好还是能够理解配置文件是怎样构


成的。



只有当你需要在应用程序配置文件中使用

< p>
log4net


配置时,才需要在



标签中加入



配置节点入口。对于其他的单独文件,只有



标签内的文本才


是必需的,这些标签的顺序并不是固定的。下面我们依次讲解 各个标签内文本的含义:





3.1.1








在框架的体系里,所有的日志对象都是根日志


(root logger)


的后代。



因此如果一 个日志对象


☆☆☆☆☆☆☆☆可以编辑的


WORD


文档★知识成就未来☆☆☆☆☆☆☆☆


-


-


-


-


-


-


-


-



本文更新与2021-02-17 23:37,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/663683.html

log4net使用手册的相关文章