没有合适的资源?快使用搜索试试~ 我知道了~
log4net使用手册: 从log4net的概述、配置详解、以及在项目中的应用描述。
资源推荐
资源详情
资源评论
log4net 使用手册
1 简介
1.1Log4net 的优点:
几乎所有的大型应用都会有自己的用于跟踪调试的 API。因为一旦程序被部署以后,就不
太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断
和修复配置上的问题。
经验表明,日志记录往往是软件开发周期中的重要组成部分。它具有以下几个优点:它可
以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的 Bug;一旦在程
序中加入了 Log 输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。另
外,日志信息可以输出到不同的地方(控制台,文件等)以备以后研究之用。
Log4net 就是为这样一个目的设计的,用于.NET 开发环境的日志记录包。
1.2Log4net 的安装:
用户可以从 http://logging.apache.org/log4net/下载 log4net 的源代码。解压软件包后,在解压
的 src 目录下将 log4net.sln 载入 Visual Studio .NET,编译后可以得到 log4net.dll。用户要在
自己的程序里加入日志功能,只需将 log4net.dll 引入工程即可。
2 Log4net 的结构
log4net 有四种主要的组件,分别是 Logger(记录器), Repository(库), Appender(附着
器)以及 Layout(布局).
2.1Logger
2.1.1 Logger 接口
Logger 是应用程序需要交互的主要组件,它用来产生日志消息。产生的日志消息并不直接
显示,还要预先经过 Layout 的格式化处理后才会输出。
Logger 提供了多种方式来记录一个日志消息,你可以在你的应用程序里创建多个 Logger,
每个实例化的 Logger 对象都被 log4net 框架作为命名实体(named entity)来维护。这意味着为
了重用 Logger 对象,你不必将它在不同的类或对象间传递,只需要用它的名字为参数调用
就可以了。log4net 框架使用继承体系,继承体系类似于.NET 中的名字空间。也就是说,
如果有两个 logger,分别被定义为 a.b.c 和 a.b,那么我们说 a.b 是 a.b.c 的祖先。每一个 logger
都继承了祖先的属性
Log4net 框架定义了一个 ILog 接口,所有的 logger 类都必须实现这个接口。如果你想实现
一个自定义的 logger,你必须首先实现这个接口。你可以参考在/extension 目录下的几个例
子。
ILog 接口的定义如下: Log4net 框架定义了一个叫做 LogManager 的类,用来管理所有的
logger 对象。它有一个 GetLogger()静态方法,用我们提供的名字参数来检索已经存在的
Logger 对象。如果框架里不存在该 Logger 对象,它也会为我们创建一个 Logger 对象。代
码如下所示:
1public interface ILog
2{
3 void Debug(object message);
4 void Info(object message);
5 void Warn(object message);
6 void Error(object message);
7 void Fatal(object message);
8//以上的每一个方法都有一个重载的方法,用来支持异常处理。
9//每一个重载方法都如下所示,有一个异常类型的附加参数。
10 void Debug(object message, Exception ex);
11 //
12 //Boolean 属性用来检查 Logger 的日志级别
13 //(我们马上会在后面看到日志级别)
14 bool isDebugEnabled;
15 bool isInfoEnabled;
16 //… 其他方法对应的 Boolean 属性
17}
18
19
log4net.ILog log = log4net.LogManager.GetLogger("logger-name");
通常来说,我们会以类(class)的类型(type)为参数来调用 GetLogger(),以便跟踪我们
正在进行日志记录的类。传递的类(class)的类型(type)可以用 typeof(Classname)方法来获得,
或者可以用如下的反射方法来获得:
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType
尽管符号长了一些,但是后者可以用于一些场合,比如获取调用方法的类 (class)的类型
(type)。
2.1.2 日志的级别
正如你在 ILog 的接口中看到的一样,有五种不同的方法可以跟踪一个应用程序。事实上,
这五种方法是运作在 Logger 对象设置的不同日志优先级别上。这几种不同的级别是作为常
量定义在 log4net.spi.Level 类中。你可以在程序中使用任何一种方法。但是在最后的发布中
你也许不想让所有的代码来浪费你的 CPU 周期,因此,框架提供了 7 种级别和相应的
Boolean 属性来控制日志记录的类型。
Level 有以下几种取值
级别
允许的方法
Boolean 属性
优先级别
OFF
Highest
FATAL
void Fatal(...);
bool IsFatalEnabled;
RROR
void Error(...);
bool IsErrorEnabled;
WARN
void Warn(...);
bool IsWarnEnabled;
INFO
void Info(...);
bool IsInfoEnabled;
DEBUG
void Debug(...);
bool IsDebugEnabled;
ALL
Lowest
表 1 Logger 的日志级别
在 log4net 框架里,通过设置配置文件,每个日志对象都被分配了一个日志优先级别。如果
没有给一个日志对象显式地分配一个级别,那么该对象会试图从他的祖先继承一个级别值
ILog 接口的每个方法都有一个预先定义好了的级别值。正如你在表 1 看到的,ILog 的
Inof()方法具有 INFO 级别。同样的,以此类推,Error()方法具有 ERROR 级别。当我们使
用以上的任何一种方法时,log4net 框架会检查日志对象 logger 的级别和方法的级别。只有
当方法的级别高于日志级别时,日志请求才会被接受并执行。
举例说明,当你创建了一个日志对象,并且把他的级别设置为 INFO。于是框架会设置日志
的每个 Boolean 属性。当你调用相应的日志方法时,框架会检查相应的 Boolean 属性,以决
定该方法能不能执行。如下的代码:
Logger.Info("message");
剩余11页未读,继续阅读
资源评论
mfkdqqqf
- 粉丝: 3
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2022年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
- Golang:通过Gin框架+Redis+责任链,实现一个简单的钉钉机器人,进行消息处理 ps:多应用版
- 2021年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
- CORRUPT.navicat150-premium-cs-x64.exe
- centos7 ssh 升级至 9.6p1
- DriverMax Pro .exe
- PHP端通过modbus协议跟第三方设备进行数据通信
- navicat安装包亲测可用
- 算法部署-使用OpenVINO部署MobileStyleGAN轻量化高保真图像合成算法-项目源码-优质项目实战.zip
- 基于java实现远程采集华为逆变器使用modbus tcp协议进行通讯的设备数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功