Log4.Net的介绍

一、介绍

  当我们开发软件时,一般都会加入运行期的跟踪手段,以方便后续故障分析和Bug调试。.net framework本身提供了一个System.Diagnostics.Trace类来实现流程跟踪功能,但很多时候却不能满足我们的需求,这时往往需要一个更加强大的第三方日志系统。Log4Net是一个开源的日志记录组件。和其他开源组件一样,它也是从Java中移植过来的。log4net来源于java应用中的log4J。

二、官网以及文档地址

官方网站:http://logging.apache.org/

下载地址:http://logging.apache.org/log4net/download_log4net.cgi 目前最新版本是1.2.15

三、示例

1、首先创建一个控制台程序

2、在Nuget中下载Log4Net

3、单独配置在xml文件中,当然也可以配置在App.config或Web.config中。配置信息下面详讲。

4、在程序启动处读取日志配置信息,如果是CS程序,在根目录的Program.cs中的Main方法中添加下面语句。如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:

log4net.Config.XmlConfigurator.Configure();

除了这种方式,也可以直接在项目的AssemblyInfo.cs文件里添加以下的语句来定义配置文件的路径信息。

[assembly: log4net.Config.XMLConfigurator(ConfigFile = “log4net.config”, Watch = true)]

5、在程序中使用Log4Net

log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");//获取一个日志记录器

log.Info(DateTime.Now.ToString() + ": login success");//写入一条新log

可以定义多个log对象,每个log对象分别取配置文件不同的<logger>标记,每个<logger>分别取不同的appender。

这样就可以用不同的log对象把日志输出到不同的文件或者其它介质。

End。

四、Log4Net的五大组成部分

分别为:Logger记录器,Appenders附着器, Filters过滤器, Layouts 和Object Renders。

4.1、Logger记录器

Logger是应用程序需要交互的主要组件,它用来产生日志消息。产生的日志消息并不直接显示,还要预先经过Layout的格式化处理后才会输出。

Log4net框架定义了一个叫做LogManager的类,用来管理所有的Logger对象。它有一个GetLogger()静态方法,用我们提供的名字参数来检索已经存在的Logger对象。如果框架里不存在该Logger对象,它也会为我们创建一个Logger对象。代码如下所示:

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

日志级别:

Logger的Level属性可以设置为以下值,由高到低为OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL. 高于设定值方法都不能写入日志。
Off所有的写入方法都不写到日志里,ALL则相反。例如当我们设成Info时,logger.Debug就会被忽略而不写入文件,但是FATAL,ERROR,WARN,INFO会被写入,因为他们等级高于INFO;

4.2Appender

一个好的日志框架应该能够产生多目的地的输出。比如说输出到控制台或保存到一个日志文件。log4net 能够很好的满足这些要求。它使用一个叫做Appender的组件来定义输出介质。正如名字所示,这些组件把它们附加到Logger日志组件上并将输出传递到输出流中。你可以把多个Appender组件附加到一个日志对象上。 Log4net框架提供了几个Appender组件。关于log4net提供的Appender组件的完整列表可以在log4net框架的帮助手册中找到。有了这些现成的Appender组件,一般来说你没有必要再自己编写了。但是如果你愿意,可以从log4net.Appender.AppenderSkeleton类继承。

负责向存储介质中追加日志, 一般在配置文件中配置,根据保存日志介质的不同Appender有多种,
比如:AdoNetAppender,EventLogAppender,RollingFileAppender等.参见:
http://logging.apache.org/log4net/release/config-examples.HTML.

4.3Filter

负责过滤日志, 一般和Appender联合使用,在配置文件中配置

4.4Layout

负责日志消息的格式, 一般和Appender联合使用,在配置文件中配置。

Layout 组件用于向用户显示最后经过格式化的输出信息。输出信息可以以多种格式显示,主要依赖于我们采用的Layout组件类型。可以是线性的或一个XML文件。Layout组件和一个Appender组件一起工作。API帮助手册中有关于不同Layout组件的列表。一个Appender对象,只能对应一个Layout对象。要实现你自己的Layout类,你需要从log4net.Layout.LayoutSkeleton类继承,它实现了ILayout接口。

----------------------------------------------------------------------

log4net标签的框架如下, 该标签下有root, logger, appender等标签

root标签

所有的logger都从root继承, root本身也是一个logger

logger标签

每个logger标签代表一个logger,appender-ref表示该logger产生的日志消息传递给哪个appender,一个logger可以把相同的消

息传递给多个appender记录

appender标签

每个appender表示一个日志的存储位置,name不能和type一样

设定参数

日志根据日期滚动

日志文件名格式为

日志文件名是否是固定不变的

4.5散打

五、Log4net.config配置

时间: 2024-08-05 07:09:36

Log4.Net的介绍的相关文章

多缓冲提高日志系统性能

前言:无论什么项目肯定都少不了日志系统,所以一个高性能的日志系统是不可避免的. 本文介绍的是自己用c++11实现的一个简单的多缓冲区日志系统,比较水,仅供参考^_^ 主题: 日志系统及重要性 单缓冲日志系统模型及缺陷 多缓冲buffer介绍及优势 多缓冲区缺陷 Buffer类设计及分析 Logger类设计及分析 日志系统及重要性: 日志信息对于一个优秀项目来说是非常重要的,因为无论再优秀的软件都有可能产生崩溃或异常,此时,日志系统就能发挥它的作用. 快速定位到错误地点以及错误内容,或者查看最近信

应用程序开发--所用过的技术与工具介绍

关于应用程序开发,经历过一些技术与工具的变化与使用,以及一些专业术语.下面我列示一下,后面会根据这些知识点逐一介绍. 1.CRUD操作: 2.DTO: 3.Lambda表达式: 4.传统三层架构或DDD分层架构: 5.常用设计模式: 6.常用架构模式: 7.XMind思维导图工具:mindManager; 8.Log4.Net介绍与使用: CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写.主

LindDotNetCore~基于模块化注入的介绍

LindDotNetCore相关介绍 相关模块 全局都是依赖DI 消息队列 NoSql Caching 仓储 服务总线 Solr 调度 日志 Asspect拦截组件 UAA授权 各种组件环境的搭建 各模块单元测试编写 DI统一战线 LindDotNet框架同样采用了全局DI注入的方式来使用模块对象的,这种松耦合的设计对于单元测试 是很方便人. services.AddLog4Logger(o => { o.Log4ConfigFileName = "log4.config"; o

数据库介绍与分类

目录 数据库介绍与分类... 1 1.1 数据库介绍... 2 1.1.1什么是数据库... 2 1.2数据库的种类... 2 1.2.1关系型数据库介绍... 2 1.2.2非关系型数据库介绍... 3 1.3 常用关系型数据库产品介绍... 4 1.3.1 Oracle数据库... 4 1.3.2 MySQL数据库... 5 1.3.3 MariaDB数据库... 5 1.3.4 SqlServer数据库... 6 1.3.5 Access数据库... 6 1.3.6 其他不常用数据库...

基于位置信息的聚类算法介绍及模型选择

百度百科 聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异."物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法.聚类分析起源于分类学,但是聚类不等于分类.聚类与分类的不同在于,聚类所要求划分的类是未知的. 分类和聚类算法一直以来都是数据挖掘,机器学习领域的热门课题,因此产生了众多的

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

苹果高管斯洛基介绍A11仿生芯片背后的秘密!

9月13日凌晨,苹果在秋季发布会上正式推出了全新一代iPhone智能手机:iPhone 8.iPhone 8 Plus和iPhone X(发音为iPhone 10).这三款新设备的都搭载了全新的移动芯片,苹果称之为A11仿生(不是"Fusion"),并表示这是iPhone上有史以来最强大.最智能的芯片. 通过发布会介绍的A11仿生芯片细节,不难发现苹果自主定制芯片野心非常大,可谓雄心勃勃.并且随着时间的推移,针对半导体芯片的定制设计越来越多,A11达到了前所未有的高度.苹果在发布会中的

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种: