Log4net库是.Net下一个非常优秀的开源日志记录组件,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。它具有:支持多数框架、可输出日志到多种目标、层级日志体系、可使用XML配置、可动态配置、模块化和可扩展化设计、灵活、高性能等特征。
一、程序界面
记录文件输出在logs文件夹下。
二、应用实例
- 首先从apache网站下载log4net, http://logging.apache.org/log4net/download_log4net.cgi 。
- 将 \bin\net\4.0\release\log4net.dll 复制到你的项目中 。
- 在项目中添加对log4net.dll的引用。
4.在项目中创建一个新的log4net的配置文件Log4Net.config。
注意:根据第4步的配置,应该把log4net的配置文件放到项目的bin/Debug 或者 bin/Release目录下,否则会出现找不到配置文件而无法创建logger对象。
(web的项目,直接放在web项目的根目录下即可)5.在你的类中引入命名空间
using log4net;6.新增一个LogHelper
public class LogHelper
{
public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
public static readonly Dictionary<string, log4net.ILog> logs;
public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
- 初始化log4net,程序启动时读取log4net的配置文件。
如果是CS程序,在根目录的Program.cs中的Main方法中添加:
log4net.Config.XmlConfigurator.Configure();
如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:
log4net.Config.XmlConfigurator.Configure();
也可以使用自定义的配置文件。
- 初始化log4net,程序启动时读取log4net的配置文件。
8.使用。
在需要写日志的地方调用LogHelper的相关函数写日志,如下:
LogHelper.WriteLog(string.Format("{0},{1},{2}", "系统进程", "AppInfo", "这是测试的记录"));
三、Log4net的主要组成部分
1. Appenders
Appenders用来定义日志的输出方式,即日志要写到那种介质上去。较常用的Log4net已经实现好了,直接在配置文件中调用即可。当然也可以自己写一个,需要从log4net.Appender.AppenderSkeleton类继承。它还可以通过配置Filters和Layout来实现日志的过滤和输出格式。
- AdoNetAppender 将日志记录到数据库中。可以采用SQL和存储过程两种方式。
- FileAppender 将日志输出到文件。
- ForwardingAppender 发送日志事件到子Appenders。
2.Filters
使用过滤器可以过滤掉Appender输出的内容。过滤器通常有以下几种:
- DenyAllFilter 阻止所有的日志事件被记录
- LevelMatchFilter 只有指定等级的日志事件才被记录
- LevelRangeFilter 日志等级在指定范围内的事件才被记录
- LoggerMatchFilter 与Logger名称匹配,才记录
- PropertyFilter 消息匹配指定的属性值时才被记录
- StringMathFilter 消息匹配指定的字符串才被记录
3.Layouts
Layout用于控制Appender的输出格式,可以是线性的也可以是XML。
一个Appender只能有一个Layout。
最常用的Layout应该是经典格式的PatternLayout,其次是SimpleLayout,RawTimeStampLayout和ExceptionLayout。然后还有IRawLayout,XMLLayout等几个。
4.Loggers
Logger是直接和应用程序交互的组件。Logger只是产生日志,然后由它引用的Appender记录到指定的媒介,并由Layout控制输出格式。
- Logger提供了多种方式来记录一个日志消息,也可以有多个Logger同时存在。每个实例化的Logger对象对被log4net作为命名实体(Named Entity)来维护。
- log4net使用继承体系,也就是说假如存在两个Logger,名字分别为a.b.c和a.b。那么a.b就是a.b.c的祖先。每个Logger都继承了它祖先的属性。所有的Logger都从Root继承,Root本身也是一个Logger。
- 日志的等级,它们由高到底分别为:
OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
5.Object Renders
它将告诉logger如何把一个对象转化为一个字符串记录到日志里。(ILog中定义的接口接收的参数是Object,而不是String。)
6.Repository
Repository主要用于日志对象组织结构的维护。
四、参考资料
1.阿齐兹的博客https://blog.csdn.net/binnygoal/article/details/79557746
2.blueday406的博客https://blog.csdn.net/blueday406/article/details/105009359
五、源程序下载地址
1.dalong10的下载https://download.csdn.net/download/dalong10/12826936