




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Log4Net学习笔记1. Log4Net环境的搭建与基本配置2(1) Log4Net框架介绍2(2) Log4Net的环境配置以及简单使用22. Log4Net结构2(1) Log4Net核心组件2(2) Logger介绍2(3) Appender介绍3(4) Filter介绍3(5) Layout介绍3(6) Object Render介绍33. logger节点配置详解3(1) logger节点配置3(2) 日志级别等级3(3) ILog对象说明3(4) logger配置使用示例34. appender节点配置详解4(1) appender节点配置4(2) appender的输出方式(type属性)4(3) appender配置使用示例55. filter节点配置详解5(1) filter节点配置5(2) filter的类型说明5(3) filter的工作原理5(4) filter的使用示例66. Layout节点配置详解6(1) layout节点配置6(2) layout节点的type属性取值6(3) PatterLayout的格式化字符串6(4) PatterLayout格式修饰符7(5) layout的使用示例77. 其它节点的说明与配置7(1) param节点7(2) root节点7(3) log4net节点7(4) configSections节点78. 配置文件7(1) 配置文件结构图8(2) 配置文件示例8(3) 关联配置文件8作者:李志伟时间:2014-05-101. Log4Net环境的搭建与基本配置(1) Log4Net框架介绍Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版。我们可以控制日志信息的输出目的地。Log4net中定义了多种日志信息输出模式。它可以根据需要将日志输出到控制台,文本文件,windows 日志事件查看器中,包括数据库,邮件等等位置,以便我们快速跟踪程序bug。(2) Log4Net的环境配置以及简单使用程序代码:assembly: log4net.Config.XmlConfigurator(Watch = true)namespace APP02 class Program static void Main(string args) ILog log = log4net.LogManager.GetLogger(Test); log.Error(错误, new Exception(发生了一个异常);/错误 log.Fatal(严重错误, new Exception(发生了一个致命错误);/严重错误 log.Info(信息); /记录一般信息 log.Debug(调试信息);/记录调试信息 log.Warn(警告);/记录警告信息 Console.WriteLine(日志记录完毕。); Console.Read(); App.config文件配置: 运行结果:2. Log4Net结构(1) Log4Net核心组件Log4net主要分为5个核心组件: Logger, Appender, Filter, Layout, Object Render。(2) Logger介绍Logger是负责日志的记录者,假设我们需要记录一些正常的运行时日志和出现异常时的错误日志,那么我们可以通过在配置文件当中添加两个Logger实现。Logger主要用于记录日志的分类和控制日志的级别。它可以以多种格式输出日志信息,同时它也可以控制日志的输出级别。log4net使用继承体系,也就是说假如存在两个Logger,名字分别为a.b.c和a.b。那么a.b就是a.b.c的祖先。每个Logger都继承了它祖先的属性。(3) Appender介绍Appender提供记录的介质,我们可能要将日志输出到控制台,文本文件,windows 日志事件查看器中,包括数据库,邮件等等位置。我们可以通过Appender配置实现,而且Log4Net当中已经默认提供了一些常用的Appender,我们可以简单地修改一些配置文件就实现同时向数据库和同时向文件中写入的功能。(4) Filter介绍Filter就是过滤器,使用过滤器可以过滤掉Appender输出的部分内容,只输出感兴趣的日志。(5) Layout介绍Layout用于控制Appender的输出格式,可以使线性的也可以使XML。一个Appender只能有一个Layout配置。(6) Object Render介绍Object Render将告诉logger如何把一个对象转化为一个字符串记录到日志里。ILog中定义的记录日志的方法接收的参数是Object,而不是String。例如你想把Orange对象记录到日志中,但此时logger只会调用Orange默认的ToString方法而已。所以要定义一个OrangeRender类实现log4net.ObjectRender.IObjectRender接口,然后注册它。这时logger就会知道如何把Orange记录到日志中了。3. logger节点配置详解(1) logger节点配置logger节点支持的属性:name、必须的,logger的名称,在代码中得到ILog对象时用到。additivity可选,取值是true或false,默认值是true。设置为false时将阻止父logger中的appender。logger支持的子元素:level、appender-ref、param。level最多一个。在这个级别或之上的才会被记录。OFF、FATAL、ERROR、WARN 、INFO、DEBUG、ALLappender-ref0个或多个,要引用的appender的名字。param0个或多个,设置一些参数。(2) 日志级别等级高到底分别为:OFF FATAL ERROR WARN INFO DEBUG ALL(3) ILog对象说明ILog是实现Logger的一个接口,ILog定义了5个方法(Debug,Inof,Warn,Error,Fatal)分别对不同的日志等级记录日志。这5个方法都有1个重载,以Debug为例说明一下,其它的和它差不多。ILog中对Debug方法的定义如下:void Debug(object message);void Debug(object message, Exception exception);还有一个布尔属性:bool IsDebugEnabled get; 如果使用Debug(object message, Exception exception)则无论Layout如何配置,日志都会输出Exception信息,包括Exception的Message和Trace。如果使用Debug(object message),则无论Layout如何配置是不会输出Exception信息的。在代码中可以使用LogManager类来得到Logger配置下的相应的ILog对象,LogManager类用来管理所应得Logger,它的GetLogger静态方法,可以获得配置文件中相应的Logger,代码如下:ILog log = LogManager.GetLogger(logger-name)(4) logger配置使用示例使用多个appender同事到控制台与文件中输出日志 使用logger的继承机制 4. appender节点配置详解(1) appender节点配置支持的属性:name、type(name属性必须唯一,type属性必须指定)。name必须的,appender对象的名称type必须的,appender对象的输出类型常用的子元素:appender-ref、filter、layout、paramappender-ref0个或多个,允许此appender引用其他appender,并不是所以appender类型都支持。filter0个或多个,定义此appender使用的过滤器。layout最多一个。定义appender使用的输出格式。param0个或多个, 设置Appender类中对应的属性的值。(2) appender的输出方式(type属性)AdoNetAppender将日志记录到数据库中。可以采用SQL和存储过程两种方式。AnsiColorTerminalAppender将日志高亮输出到ANSI终端。AspNetTraceAppender能用中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的形式广播。(3) appender配置使用示例 以回滚文件的形式记录日志 使用过滤器记录日志 5. filter节点配置详解(1) filter节点配置filter只能作为的子元素,type属性表示Filter的类型。常用子元素数量0个或多个,作用设置一些参数。(2) filter的类型说明DenyAllFilter阻止所有的日志事件被记录LevelMatchFilter只有指定等级的日志事件才被记录LevelRangeFilter日志等级在指定范围内的事件才被记录LoggerMatchFilterLogger名称匹配,才记录PropertyFilter消息匹配指定的属性值时才被记录StringMathFilter消息匹配指定的字符串才被记录MdcFilterNdcFilter(3) filter的工作原理如果想使用LevelMatchFilter过滤器过滤日志信息,我们使用如下的配置: 在控制台输出的日志信息如下:此时,我们会觉得很奇怪,为什么所有等级的日志信息都输出了呢?我们再修改一下配置: 现在,在控制台输出的日志信息如下:现在,就得到了我们想要的输出日志。其实filter的工作原理是这样的:日志在被过滤器处理时,如果日志信息满足当前过滤器的过滤条件时,该日志信息就会被输出记录,否则日志信息将被传递给下一个过滤器做同样的处理,如果下一个过滤器不存在也会输出日志信息。(4) filter的使用示例记录日志等级为“FATAL”和“ERROR”的日志信息: 记录日志等级范围从“ERROR”到“INFO”的日志信息: 6. Layout节点配置详解(1) layout节点配置layout节点只能作为的子元素。type属性表示Layout的类型。常用子元素数量0个或多个,作用设置一些参数。Layout用于控制Appender的输出格式,可以使线性的也可以使XML。最常用的Layout应该是用户自定义格式的PatternLayout,其次是SimpleLayout和ExceptionLayout。然后还有4个Layout,其中有两个是输出Xml的Layout,但是中文会有问题。ExceptionLayout需要给Logger的方法传入Exception对象作为参数才起作用,否则就什么也不输出。输出的时候会包含Message和Trace。(2) layout节点的type属性取值ExceptionLayout只呈现日志事件中异常的文本信息PatternLayout可以通过类型字符串来配置的布局RawPropertyLayout从日志事件中提取属性值RawTimeStampLayout从日志事件中提取日期RawUtcTimeStampLayout从日志事件中提取UTC日期SimpleLayout很简单的布局XmlLayout把日志事件格式化为XML元素的布局(3) PatterLayout的格式化字符串%m、%message输出的日志消息%d、%datetime输出当前语句运行的时刻,格式%dateyyyy-MM-dd HH:mm:ss,fff%r、%timestamp输出程序从运行到执行到当前语句时消耗的毫秒数%p、%level日志的当前优先级别%c、%logger当前日志对象的名称%L、%line输出语句所在的行号%F、%file输出语句所在的文件名,警告:只在调试的时候有效,调用本地信息会影响性能%a、%appdomain引发日志事件的应用程序域的名称。%C、%class、%type引发日志请求的类的全名,警告:会影响性能%exception异常信息%u、%identity当前活动用户的名字,我测试的时候%identity返回都是空的。警告:会影响性能%l、%location引发日志事件的名空间、类名、方法、行号。警告:会影响性能,依赖pdb文件%M、%method发生日志请求的方法名,警告:会影响性能%n、%newline换行符%x、%ndcNDC(nested diagnostic context)%X、%mdc、%P、%properties等介于 %property%property输出log4net:Identity=, log4net:UserName=, log4net:HostName= %t、%thread引发日志事件的线程,如果没有线程名就使用线程号。%w、%username当前用户的WindowsIdentity,类似:HostName/Username。警告:会影响性能%utcdate发生日志事件的UTC时间。例如:%utcdateHH:mm:ss,fff%输出一个百分号(4) PatterLayout格式修饰符格式修饰符对齐最小宽最大宽说明%20logger右对齐20无如果logger名不足20个字符,就在左边补空格%-20logger左对齐20无如果logger名不足20个字符,就在右边补空格%.30logger左对齐无30超过30个字符将截断%20.30logger右对齐2030logger名要在20到30之间,少了在左边补空格,多了截断%-20.30logger左对齐2030logger名要在20到30之间,少了在右边补空格,多了截断(5) layout的使用示例 7. 其它节点的说明与配置(1) param节点元素可以是如何元素的子元素,包含的属性:name、value、:必须的,取值是父对象的参数名。value:可选的,value是一个能被转化为参数值的字符串。type:可选的,value和type中,必须有一个属性被指定。type是一个类型名,如果type不是在log4net程序集中定义的,就需要使用全名。param节点的主要作用是可以代替其他任何节点,例如: !-可以使用:- !-可以使用:- (2) root节点root节点的作用是所有其它logger都默认继承它。root元素没有属性。root节点的子元素与logger一样有appender-ref、level、param。使用示例: (3) log4net节点Log4net节点是整个日志配置的根节点,包含的属性:debug、update、threshold。debug:可选,取值是true或false,默认是false。设置为true,开启log4net的内部调试。update:可选,取值是Merge(合并)或Overwrite(覆盖),默认值是Merge。设置为Overwrite,在提交配置的时候会重置已经配置过的库。threshold:可选,取值是repository(库)中注册的level,默认值是ALL。Log4net节点支持的子元素:appender(0或多个)、logger (0或多个)、renderer (0或多个)、root(最多一个)、param(0或多个)。(4) configSections节点配置log4net需要在configSections节点中加入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机电设备安装施工事故应急预案
- 隧道防震加固技术方案
- 水痘课件试讲
- 知识点3.3从人文层面感知色彩设计构成设计色彩68课件
- 装饰施工图设计新氧科技办公楼北京艾迪尔85课件
- 二零二五年度海沧区人民政府与厦门市水利局共建水利基础设施项目合同
- 2025版房地产商房地产营销推广策划合同
- 二零二五年度仓储物抵押反担保协议
- 二零二五年度玩具代加工业务合作协议
- 2025版大型企业培训中心场地租赁及讲师住宿服务合同
- 基本药物临床应用管理制度
- 放射科新技术介绍
- 盆底功能障碍问卷(PFDI20)
- 居住证申请表(正式版)
- 护士临床思维建立
- 公共场所卫生知识培训材料
- 证据目录范本
- 标准档案盒脊背(格式已设置好)
- GB/T 21475-2008造船指示灯颜色
- 园林绿化工高级技师知识考试题库(附含答案)
- 安医大生殖医学课件04胚胎的培养
评论
0/150
提交评论