log4net记录日志的功用特别强盛

前提题要:因为本人这两天承当的Winform项目,相当多都用到了那些log4net的日志效能,开荒顺序对数码貌似都务求做到雁过留痕,所以日志对于大家技士是不可缺少。由此笔者把对log4net的运用做四个记下计算,以便于其后的运用回忆。l

一、概述

       log4net是.Net下三个可怜神奇的开源日志记录组件。
他是apache协会下边的叁个工程,详见Apache介绍:https://baike.baidu.com/item/Apache软件基金会/2912769?fr=aladdin,
 
log4net记录日志的功能特别常有力。它能够将日志分区别的等第,以区别的格式,输出到分化的媒人。

二、一个小的案例完毕进度

    第一步、在项目中加多对log4net的援用,若无的话,能够手动在NuGet包里面搜索下载增添

    第二步、设置配置文件

这些是本人的winfrom里面包车型大巴布局,供参照他事他说加以侦察

图片 1图片 2

 1  <configSections>
 2     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
 3   </configSections>
 4   <startup useLegacyV2RuntimeActivationPolicy="true">
 5     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
 6   </startup>
 7 
 8   <log4net>
 9     <root>
10       <level value="WARN" />
11       <appender-ref ref="LogFileAppender" />
12       <appender-ref ref="ConsoleAppender" />
13     </root>
14     <logger name="Logging">
15       <level value="DEBUG" />
16     </logger>
17     <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
18       <file value="Logs/" />
19       <appendToFile value="true" />
20       <rollingStyle value="Date" />
21       <datePattern value="yyyy-MM-dd&quot;.log&quot;" />
22       <maxSizeToRollBackups value="-1" />
23       <maximumFileSize value="100MB" />
24       <staticLogFileName value="false" />
25       <layout type="log4net.Layout.PatternLayout,log4net">
26         <conversionPattern value="%d - %-5level - %c - %m%n" />
27       </layout>
28  
29       <filter type="log4net.Filter.LevelRangeFilter">
30         <param name="LevelMin" value="DEBUG" />
31         <param name="LevelMax" value="WARN" />
32       </filter>
33     </appender>
34     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
35       <layout type="log4net.Layout.PatternLayout">
36         <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
37       </layout>
38     </appender>
39   </log4net>

View Code

   第三步、

设即使CS程序,在根目录的Program.cs中的Main方法中增加:

log4net.Config.XmlConfigurator.Configure();

假定是BS程序,在根目录的Global.asax.cs(未有新建叁个卡塔尔中的Application_Start方法中加上:

log4net.Config.XmlConfigurator.Configure();

无论BS照旧CS程序都可平昔在品种的AssemblyInfo.cs文件里增加以下的语句:

[assembly: log4net.Config .XmlConfigurator()]

    第四步、声雅培(Abbott卡塔 尔(阿拉伯语:قطر‎个日志容器

   
 图片 3

      
作者在安排文件中是这么设置的:图片 4

   第五步、在前后相继中运用

  图片 5

三、首要的组成都部队分

             1.Appenders

              
Appenders用来定义日志的出口情势,即日志要写到这种媒质上去。较常用的Log4net已经落到实处好了,直接在配置文件中调用就可以,可参见上边配置文件例子;当然也足以本人写一个,需求从
     
log4net.Appender.AppenderSkeleton类世襲。它还是能通过安插Filters和Layout来兑现日志的过滤和出口格式。

              已经落到实处的输出情势有:

AdoNetAppender 将日志记录到数据库中。能够应用SQL和积存进度三种艺术。

AnsiColorTerminalAppender 将日志高亮输出到ANSI终端。

AspNetTraceAppender  能用asp.net中Trace的章程查看记录的日志。

BufferingForwardingAppender 在输出到子Appenders以前先缓存日志事件。

ConsoleAppender 将日志输出到应用程控台。

EventLogAppender 将日志写到Windows Event Log。

FileAppender 将日志输出到文件。

ForwardingAppender 发送日志事件到子Appenders。

LocalSyslogAppender 将日志写到local syslog service (仅用于UNIX情况下)。

MemoryAppender 将日志存到内存缓冲区。

NetSendAppender 将日志输出到Windows Messenger service.这几个日记新闻将要客商终端的对话框中展现。

OutputDebugStringAppender 将日志输出到Debuger,如果程序未有Debuger,就输出到系统Debuger。假若系统Debuger也不可用,将忽视信息。

RemoteSyslogAppender 通过UDP互连网合同将日志写到Remote syslog service。

RemotingAppender 通过.NET Remoting将日志写到远程选拔端。

 RollingFileAppender 将日志以回滚文件的花样写到文件中。

SmtpAppender 将日志写到邮件中。

SmtpPickupDirAppender 将消息以文件的法门放入一个索引中,像IIS SMTP
agent那样的SMTP代理就足以阅读或发送它们。

TelnetAppender 客商端通过Telnet来经受日志事件。

TraceAppender 将日志写到.NET trace 系统。

UdpAppender 将日志以无连接UDP数据报的款型送到长途宿主或用UdpClient的样式播放。

     2.Filters

使用过滤器能够过滤掉Appender输出的剧情。过滤器常常有以下两种:

DenyAllFilter 阻止全数的日志事件被记录

LevelMatchFilter 独有指定品级的日记事件才被记录

LevelRangeFilter 日志品级在钦定范围内的平地风波才被记录

LoggerMatchFilter 与Logger名称相称,才记录

PropertyFilter 消息相配钦命的属性值时才被记录

StringMathFilter 音讯匹配钦命的字符串才被记录

3.Layouts

Layout用于调节Appender的出口格式,能够是线性的也足以是XML。

一个Appender只可以有一个Layout。

最常用的Layout应该是优秀格式的PatternLayout,其次是SimpleLayout,RawTimeStampLayout和ExceptionLayout。然后还应该有IRawLayout,XMLLayout等多少个,使用少之甚少。Layout能够友善完结,需求从log4net.Layout.LayoutSkeleton类世袭,来输出一些独树一帜必要的格式,在后头扩大时就再也完结了三个Layout。

SimpleLayout简单输出格式,只输出日志品级与音信内容。

RawTimeStampLayout 用来格式化时间,在向数据库输出时会用到。

样式如“yyyy-MM-dd HH:mm:ss“

ExceptionLayout必要给Logger的方法传入Exception对象作为参数才起效能,不然就什么样也不出口。输出的时候会含有Message和Trace。

PatterLayout使用最多的二个Layout,能出口的音信超多。

4.Loggers

Logger是平素和应用程序交互作用的零构件。Logger只是发寿诞志,然后由它援用的Appender记录到钦命的媒介,并由Layout调节输出格式。

Logger提供了二种方法来记录叁个日志音信,也得以有多少个Logger同一时候设有。每一个实例化的Logger对象对被log4net作为命名实体(Named
Entity卡塔 尔(英语:State of Qatar)来保养。log4net使用持续类别,约等于说若是存在七个Logger,名字分别为a.b.c和a.b。那么a.b正是a.b.c的上代。每种Logger都继承了它祖先的质量。全数的Logger都从Root世襲,Root本身也是一个Logger。

日记的阶段,它们由高到底分别为:

OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL 

超越品级设定值方法(怎么样设置参见“配置文件详整”卡塔 尔(阿拉伯语:قطر‎都能写入日志, Off全部的写入措施都不写到日志里,ALL则相反。比方当大家设成Info时,logger.Debug就能够被忽视而不写入文件,但是FATAL,E中华VRO宝马X5,WA奇骏N,INFO会被写入,因为她俩品级高于INFO。

在现实写日记时,日常能够如此通晓日志品级:

FATAL(致命错误卡塔尔国:记录系统中冒出的能接纳系统完全失去效能,服务甘休,系统崩溃等使系统不能够持续运转下去的不当。举例,数据库不能连接,系统出现死循环。

E奇骏RO本田UR-V(寻常错误卡塔 尔(阿拉伯语:قطر‎:记录系统中现身的招致系统不安宁,部分机能现身零乱或一些机能失效生机勃勃类的荒诞。例如,数据字段为空,数据操作不可完成,操作现身非常等。

WA本田CR-VN(警报卡塔尔:记录系统中不影响系统持续运营,但不相符系统运作平常化尺度,有希望孳生系统错误的信息。举例,记录内容为空,数据内容不得法等。

INFO(日常新闻卡塔 尔(英语:State of Qatar):记录系统运营中应该让客商知道的中坚信息。举例,服务从前运营,成效已经开户等。

DEBUG (调节和测量检验新闻卡塔 尔(阿拉伯语:قطر‎:记录系统用于调节和测验的全体音讯,内容照旧是风姿浪漫对要害数据内容的输出。

Logger完成的ILog接口,ILog定义了5个艺术(Debug,Inof,Warn,Error,Fatal卡塔尔国分别对两样的日记等第记录日志。那5个方法还大概有5个重载。以Debug为例说美素佳儿下,别的的和它基本上。

ILog中对Debug方法的概念如下:

void Debug(object message);

void Debug(object message, Exception ex);

再有八个布尔属性:

bool IsDebugEnabled { get; }

假若选取Debug(object message, Exception ex),则无论Layout中是不是定义了%exception,暗中同意配置下日志都会输出Exception。满含Exception的Message和Trace。如若应用Debug(object
message),则日志是不会输出Exception。

最终还要说三个LogManager类,它用来保管全体的Logger。它的GetLogger静态方法,能够获取配置文件中相应的Logger:

log4net.ILog log = log4net.LogManager.GetLogger(“logger-name”);

5.Object Renders

它将报告logger怎么样把三个对象转变为一个字符串记录到日志里。(ILog中定义的接口选拔的参数是Object,并非String。卡塔尔国

比如你想把Orange对象记录到日志中,但此刻logger只会调用Orange暗许的ToString方法而已。所以要定义二个OrangeRender类达成log4net.ObjectRender.IObjectRender接口,然后注册它(大家在本文中的扩充不行使这种方法,而是一贯促成三个自定义的Layout卡塔 尔(阿拉伯语:قطر‎。那个时候logger就能领会什么样把Orange记录到日志中了。

       6.Repository

         Repository重要用以日志对象组织结构的体贴。  

 PS来源:

 

   

 

      

  

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website