日志框架Nlog之前言

我们常常想快速的锁定程序的bug。

我们常常想通过查看文件就知道这段时间内程序的运行情况。

我们常常想通过查看数据库来了解用户对程序的操作情况。

我们甚至想,把这些数据都直接主动的发送到我的邮箱里。


事实上这些都很好搞定。


我们只需要 一个成熟优秀的日志框架来替我们做这些事情。像EnterpriseLibrary,ObjectGuy Framework,log4net,Nlog等都能满足你。


因为他们都有 一些共同的特点:

      根据作用来分这些框架都会有以下组件或概念:记录器(Logger)、监视器/目标(Monitor /Target)、包装器(Wrapper)、过滤器(Filter)、布局(Layout)、严重性级别(Severity)。

        1.记录器:日志的对象,可以同时连接一个或多个不同的监视器,记录各种不同的消息和信息。

        2.监视器:用于存储和显示日志消息的媒介,有多种存在形式。如一般的文本文件、数据库、网络、控制台、邮箱等。

        3.包装器:用于制定日志记录的方式。如:同步/异步记录,(出错时)回滚记录。

        4.过滤器:用于根据严重性级别来过滤和忽略某类消息,只记录特定级别的日志消息。

        5.布局:用于格式化输出。定义输出项和输出格式。

6.严重性级别:是对消息的分类,严重性级别表示消息的严重程度。也是过滤器的过滤依据。如:调试(DEBUG)、消息(INFO)、警告(WARN)、错误(ERROR)、严重错误(FATAL)严重性依次增强。



与上述对应的是一般的日志框架会提供的一些基本特性和功能:

        1.记录简单的文本消息。

        2.消息级别的过滤。

        3.允许多个监视器。

        4.记录消息种类和会话。

        5.根据时间或大小将文件分割。

        6.通过配置文件来控制日志,与代码分离。


但是他们还是有些区别的:

     EnterpriseLibrary和ObjectGuy是部分收费的。
     log4Net 和Nlog两个免费的开源框架,都支持.NET框架和跨平台,都有配置文件,都有丰富的监视器等等,都能满足绝大部分的需求。相比NLog支持异步记录,使得NLog的整体性能要优于log4netNLog也有一些第三方图形查看器和分析器而且NLog使用起来非常方便(无论是通过代码还是配置文件)。



NLog

     NLog允许我们自定义从跟踪消息的来源(source)到记录跟踪信息的目标(target)的规则(rules)。记录跟踪信息的目标(target)可以为如下几种形式:


  • 文件
  • 文本控制台
  • Email
  • 数据库
  • 网络中的其它计算机(通过TCP或UDP)
  • 基于MSMQ的消息队列
  • Windows系统日志


除此之外,每一条跟踪消息都可以自动带有上下文信息(contextual information),并将其发送给记录跟踪信息的目标。这些上下文信息可以包含如下内容:

  • 当前的日期和时间(多种格式),记录等级,来源名称
  • 输出跟踪消息的方法的堆栈信息
  • 环境变量的值
  • 异常的详细信息
  • 计算机、进程和线程名称


每条跟踪信息都包含一个记录等级(loglevel)信息,用来描述该条信息的重要性。NLog支持如下几种记录等级:

  • Trace - 最常见的记录信息,一般用于普通输出
  • Debug - 同样是记录信息,不过出现的频率要比Trace少一些,一般用来调试程序
  • Info - 信息类型的消息
  • Warn - 警告信息,一般用于比较重要的场合
  • Error - 错误信息
  • Fatal - 致命异常信息。一般来讲,发生致命异常之后程序将无法继续执行。


                 今后几篇博客会重点的介绍Nlog的实际的使用。敬请关注。

    



你可能感兴趣的:(日志工具,NLog)