应用Log4net库记录日志信息的C#实例程序

  Log4net库是.Net下一个非常优秀的开源日志记录组件,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。它具有:支持多数框架、可输出日志到多种目标、层级日志体系、可使用XML配置、可动态配置、模块化和可扩展化设计、灵活、高性能等特征。

一、程序界面

记录日志信息
  记录文件输出在logs文件夹下。

二、应用实例

1、 首先从apache网站下载log4net, http://logging.apache.org/log4net/download_log4net.cgi 。

2、将 \bin\net\4.0\release\log4net.dll 复制到你的项目中 。

3、 在项目中添加对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”);

7、初始化log4net,程序启动时读取log4net的配置文件。
如果是CS程序,在根目录的Program.cs中的Main方法中添加:
  log4net.Config.XmlConfigurator.Configure();
  如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:
  log4net.Config.XmlConfigurator.Configure();
  也可以使用自定义的配置文件。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值