官方项目地址: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快速索引参考的更多相关文章

  1. Android ListView A~Z快速索引(改进版)

    上一篇文章虽然实现了ListView 快速索引的效果,但是有一个小小的Bug.这个Bug我在前面也说了,这篇文章就来解决这个Bug. 我研究的时候发现只要showBg值为true,中间的字母就显示,而 ...

  2. 实现ListView A~Z快速索引

    ListView A~Z快速索引这种效果在通信录和城市列表中经常看到,方便用户查找,是一种增加用户体验的好方法. 实现步骤: 1.自定义一个名叫SlideBar 的View. 2.在布局文件中加入这个 ...

  3. 快速索引 (对View的自定义)

    快速索引 (对View的自定义) 快速索引应用场景: 微信好友列表, 联系人通讯录, 应用管理, 文件管理等. 快速索引7步曲: *1. A-Z索引的绘制. * 2. 处理Touch事件. * 3. ...

  4. 8.快速索引、listview

    实现这样的效果 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

  5. Android-自定义联系人快速索引

    效果图: 布局去指定 view.custom.shangguigucustomview.MyCustomIndexView 自定义View对象 <!-- 自定义联系人快速索引 --> &l ...

  6. Android 快速索引(城市列表和联系人)

    最近需要实现一个城市列表的快速索引功能.类似于联系人应用,根据姓名首字母快速索引功能. 要实现这个功能只需要解决两个问题:1.对列表进行分组(具有同一特征),并且能够快速定位到该组的第一项 2.右侧分 ...

  7. IPFS - 可快速索引的版本化的点对点文件系统(草稿3)

    摘要 星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备.在某些方面, IPFS类似于web, 但web 是中心化的,而IPFS是一个单一的Bittorrent 群集 ...

  8. RHEL6.4 + Oracle 11g DG测试环境快速搭建参考

    环境现状: 两台虚拟主机A和B: 1. A机器已安装ASM存储的Oracle 11g 实例      参考:http://www.cnblogs.com/jyzhao/p/4332410.html 2 ...

  9. log4net 快速上手使用

    *本随笔仅限快速上手,如需深入探究,可查阅其它博友. 一.下载log4net.dll并添加引用; 二.添加配置文件 log4net.xml : <?xml version="1.0&q ...

随机推荐

  1. git查看本地和创建分支、上传分支、提交代码到分支、删除分支等,git分支、git查看本地和创建分支以及上传分支到服务器

    以下是git命令行里边的命令操作 ##进入项目目录下 giscafer@Faronsince2016 /G/002_project $ cd Comments ##查看远程分支有哪些 giscafer ...

  2. Java基础——继承、接口

    一个对象变量(例如,变量e)可以引用多种实际类型的现象被称为多态(polymorphism). 在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding). 在Java程序 ...

  3. 前端面霸系列(1):doctype 、Quirks Mode & Standards Mode 、document.compatMode

    近几日,气压猛降,雾霾铺天盖地,眼看一场腥风血雨就要在前端江湖爆发,这场战争不仅是百度.腾讯.阿狸.搜狐网易新浪等江湖豪门抢夺人才的大战,也是诸位江湖人士重新洗牌的好时机.每年10月,江湖的波动胜过华 ...

  4. 欢迎使用CSDN-markdown编辑器

    私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数. function Box(){ var color = "blue&qu ...

  5. STM32f10xxx 之 GPIO口配置

    背景 配置stm32f103使其完成PWM输出的过程中,在配置GPIO口的时候,按照习惯配置GPIO口的speed为50MHZ,突然就意识到,为什么大部分例程习惯配置为50MHZ,而不是其它值,即有了 ...

  6. java基础 布局管理器

    概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...

  7. qlikview 扩展插件制作教程-EchartsGeoMap

    效果图   显示效果和echarts官方demo一样,运行速度尚可. 第一次写博客,排版很渣以后慢慢改进. 基础知识 以EchartsGeoMap为例,讲一下怎么制作一个基础的QlikView Ext ...

  8. Spring MVC返回Map格式JSON数据

    问题描述: ajax中走error : function(e) {} 问题背景: 在测试controller层时,试过了ResponseEntity<ResponseModel>这种类型返 ...

  9. MySQL 专用备份软件参考

    1.MySQL Backup Tool   免费(需要安装 .NET 3.5)  https://sourceforge.net/projects/mysqlbutool/?source=typ_re ...

  10. .NetChajian

    Code generation(代码自动生成) NVelocity CodeSmith X-Code .NET XGoF - NMatrix / DEVerest Compilation(编译工具) ...