Log4net快速索引参考
官方项目地址:The Apache log4net project
本文内容仅为相关项参考,不进行具体使用讨论
另转载请注明出处
Log4net快速索引参考
Log4net主要有以下三个部件:
- loggers —— 记录器:开发者通过它来写日志
- appenders —— 输出位置/目标控制器:通过它控制日志需要记录在哪些地方
- layouts —— 输出格式控制器:通过它控制日志的输出格式或内容
注意事项:在使用配置文件(App.config)处理log4net时,需要在AssemblyInfo.cs文件中加上
[assembly: log4net.Config.XmlConfigurator(Watch = true)],否则无法输出;
当然这不是唯一解决方法(但应该是最简单方便的了),更多方法见官方文档:Apache log4net™ Manual - Configuration。
loggers
日志级别
标识日志的重要性。
Log4net默认提供以下5个级别:
- DEBUG —— 调试使用,如记录一些变量的值
- INFO —— 一般信息,如记录一些进度情况
- WARN —— 警告信息,如记录可忽略的异常信息
- ERROR —— 错误信息,如记录一些错误异常
- FATAL —— 致命错误信息,如记录软件崩溃信息
重要/严重程度:DEBUG < INFO < WARN < ERROR < FATAL.
以下为示例使用:
ILog log = LogManager.GetLogger("logname");
log.Info("message");
日志记录控制
即表示日志是否需要记录
与日志级别相比,多了以下两个等级:
其他等级按照其重要程度控制。
- ALL —— 表示所有日志都需要记录
- OFF —— 表示所有日志都不需要记录,即关闭日志记录
此内容常在配置文件中配置,示例如下:
<logger name="yourlogname">
<level value="INFO" />
</logger>
ILog log = LogManager.GetLogger("yourlogname");
log.Info("test");
注意:日志记录级别的控制还可以在
<root>元素内控制所有记录器的记录级别。
appenders
控制输出目标位置
常用的输出目标控制器主要有以下两个:
- log4net.Appender.ConsoleAppender —— 用于输出到控制台,调试期间使用频率较高
- log4net.Appender.FileAppender —— 用于记录到文件,软件应用发布后使用频率较高
当然,log4net还提供了一系列的控制器,具体内容见文末表格。
layouts
控制日志输出格式及要输出的内容
最常用的输出格式控制器为:log4net.Layout.PatternLayout
log4net.Layout.PatternLayout
以下为常用的格式化参数——ConversionPattern:
- %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
- %n(new line):换行
- %d(datetime):输出当前语句运行的时刻
- %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
- %t(thread id):当前语句所在的线程ID
- %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
- %c(class):当前日志对象的名称,即类名称或日志记录器的名称
- %L:输出语句所在的行号
- %F:输出语句所在的文件名
- %-数字:表示该项的最小长度,如果不够,则用空格填充
其示例如下,如PatternLayout的输出格式定义为:
%r [%t]%-5p %c - %m%n
则最终将输出内容为:
176 [main] INFO org.foo.Bar - Located nearest gas station.
关于log4net提供的更多输出格式控制器见文末表格。
其他内容
必须元素
<root>在配置文件中必须添加
过滤器-Filters
用于精确控制不同输出目标控制器,如两个输出目标控制器可以使用不同的日志输出级别。
常用的完整示例
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
<level value="WARN" />
<appender-ref ref="FileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
<logger name="yourlognameorfullclassname">
<level value="DEBUG"/>
</logger>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log-file.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
更多示例配置见官方文档:Apache log4net™ Config Examples
参考表格
appenders-输出目标控制器
内容见官方文档:Appenders
layouts-输出格式控制器
内容见官方文档:Layouts
Filters-过滤器
内容见官方文档:Filters
掘:奇葩史
Log4net快速索引参考的更多相关文章
- Android ListView A~Z快速索引(改进版)
上一篇文章虽然实现了ListView 快速索引的效果,但是有一个小小的Bug.这个Bug我在前面也说了,这篇文章就来解决这个Bug. 我研究的时候发现只要showBg值为true,中间的字母就显示,而 ...
- 实现ListView A~Z快速索引
ListView A~Z快速索引这种效果在通信录和城市列表中经常看到,方便用户查找,是一种增加用户体验的好方法. 实现步骤: 1.自定义一个名叫SlideBar 的View. 2.在布局文件中加入这个 ...
- 快速索引 (对View的自定义)
快速索引 (对View的自定义) 快速索引应用场景: 微信好友列表, 联系人通讯录, 应用管理, 文件管理等. 快速索引7步曲: *1. A-Z索引的绘制. * 2. 处理Touch事件. * 3. ...
- 8.快速索引、listview
实现这样的效果 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
- Android-自定义联系人快速索引
效果图: 布局去指定 view.custom.shangguigucustomview.MyCustomIndexView 自定义View对象 <!-- 自定义联系人快速索引 --> &l ...
- Android 快速索引(城市列表和联系人)
最近需要实现一个城市列表的快速索引功能.类似于联系人应用,根据姓名首字母快速索引功能. 要实现这个功能只需要解决两个问题:1.对列表进行分组(具有同一特征),并且能够快速定位到该组的第一项 2.右侧分 ...
- IPFS - 可快速索引的版本化的点对点文件系统(草稿3)
摘要 星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备.在某些方面, IPFS类似于web, 但web 是中心化的,而IPFS是一个单一的Bittorrent 群集 ...
- RHEL6.4 + Oracle 11g DG测试环境快速搭建参考
环境现状: 两台虚拟主机A和B: 1. A机器已安装ASM存储的Oracle 11g 实例 参考:http://www.cnblogs.com/jyzhao/p/4332410.html 2 ...
- log4net 快速上手使用
*本随笔仅限快速上手,如需深入探究,可查阅其它博友. 一.下载log4net.dll并添加引用; 二.添加配置文件 log4net.xml : <?xml version="1.0&q ...
随机推荐
- vs2015 HTTP Error 400. The request hostname is invalid.
<site name="> <application path="/" applicationPool="Clr4IntegratedAppP ...
- hibernate学习四(关系映射一对一与组件映射)
一.关系映射简介 在数据库中,表与表的关系,仅有外键.但使用hibernate后,为面向对象的编程,对象与对象的关系多样化:如 一对一,一对多,多对多,并具有单向和双向之分. 开始练习前,复制上一次项 ...
- 关于C中内存操作
from:http://blog.csdn.net/shuaishuai80/article/details/6140979 malloc.calloc.realloc的区别 C Language ...
- NOSDK--关于android傻瓜式的分包设想
一直以来,我总是以“够用就好”为理由,很少再维护过自己的一键打包的项目.最近接触了棱镜的sdk,感觉将apk包上传到棱镜服务器,后台来进行分包这种简单的方式很招人待见. 原理似乎不难,apk即zip压 ...
- java关于压缩包的处理,我这里贴出三中格式的(zip,rar,tar)解压方法(目前只用到解压,所以压缩过多研究)。
1.首先我们先来说下为什么会有这三中格式: (1)rar格式:rar格式是最先出现的压缩方式,它主要是用于商业机构一些文件的压缩,它可以根据不同公司的要求,去设定制定不同的压缩算法,这种算法是不对外公 ...
- 用Model-View-ViewModel构建iOS App
如果你已经开发一段时间的iOS应用,你一定听说过Model-View-Controller,即MVC.MVC是构建iOS App的标准模式.然而,最近我已经越来越厌倦MVC的一些缺点.在本文,我将重温 ...
- jquery_DOM笔记3
css 操作: css()设置或者返回匹配元素的样式 height() 设置或者返回匹配元素的高度 width() 设置或者返回匹配元素的宽度 offset()设置或者返回匹配元素相对于文档的相对位置 ...
- 理解Attribute
注:本文转载自http://kb.cnblogs.com/page/87531/ Attribute与Property 的翻译区别 Attribute 一般译作“特性”,Property 仍然译为“属 ...
- [原创]jquery+css3打造一款ajax分页插件
最近公司的项目将好多分页改成了ajax的前台分页以前写的分页插件就不好用了,遂重写一个 支持IE6+,但没有动画效果如果没有硬需求,个人认为没必要多写js让动画在这些浏览器中实现css3的动画本来就是 ...
- [转载]tomcat的配置文件server.xml不支持中文注释的解决办法
原文链接:http://tjmljw.iteye.com/blog/1500370 启动tomcat失败,控制台一闪而过,打开catalina的log发现错误指向了conf/server.xml,报错 ...