zoukankan      html  css  js  c++  java
  • Enterprise Library 3.0 Logging Application Block 记录日志至数据库

        安装Enterprise Library 3.0及其源码,然后编译源码,在EntLib3Src\App Blocks\bin文件夹中生成37个dll文件,包括了Enterprise Library 3.0的所有“Block”,EntLibConfig.exe是可视化配置文件改写工具,正因为这个可视化配置工具,我才没有选用Log4Net而选用了Logging做为日志记录组件,也才有了今天的这篇随笔。

        本文说一下如何使用Logging把日志记录到数据库中,对于记录至其它文件/媒体介质不做叙述。

    1.LoggingDatabase.sql

    LoggingDatabase.sql文件在EntLib3Src\App Blocks\Src\Logging\TraceListeners\Database\Scripts下,如果要把日志记录在数据库,那么请先使用此sql脚本创建数据库。

    执行此sql脚本后,生成三个表:Category、CategoryLog、Log,四个存储过程:AddCategory、ClearLogs、InsertCategoryLog、WriteLog

    2.创建你的web项目或windows项目,将EntLib3Src\App Blocks\bin的dll(37个dll不是全部用到,我偷懒给全部复制过来了)复制到创建的项目的bin中,同时将EntLibConfig.exe文件也复制过来吧。

    3.启动EntLibConfig.exe,并打开你的项目的web.config或app.config,如下图:

     

    4.将Connection Strings节点右键,new-> Connection String,连接字符串改为第1步中创建的数据库的连接字符串,如:Database= Logging;Server=ZT-103\SQLEXPRESS;uid=sa;pwd=123;

    注意 “Connection String”也是可以改名的,修改后保存,见下图:

     

    因为记录日志至数据库,使用到了Data Access Application Block,所以这一步是配置了一个Data Access实例做为数据记录源。配置完了,可以将LocalSqlServer删除掉,不删除也不影响,反正后边也用不到。

    5.按下图所示,从右键菜单新建一个“Logging Application Block”

     

    在新建的Logging Application Block节点下自动出现了Filters,Category Source,Special Source,Trace Listeners,Formatters这样的几个节点,如下:

     

    这五个节点说明
    Filters:设定过滤器,可设置那些日志会被记录下来,可以按日志分类,优先级,自定义日志过滤条件。
    Category Source:按分类设定该分类的消息记录到的目标位置,如你可以设置A分类记录在数据库,而B分类记录在文本文件;
    Special Source:根据日志的事件类型,来指定日志记录的目标位置,如你可以将错误&警告信息记录在数据库,其它的事件类型的日志记录在系统日志;
    Trace Listeners:Enterprise Library 3.0 提供了10种Trace Listeners,分别用于将日志信息记录到不同目的地中,可以记录至文本文件,事件日志,Email,XML文档,数据库,Msmq消息队列,windows的事件日志等;
    Formatters:它用于指定日志信息的格式,有三种格式:Text,Custom,Binary;

    6.在Trace Listeners上右键,new->Database Trace Listener,如下图所示设置:

     

    7.选择Special Sources->Logging Errors & Warnings->Formatted EventLog TraceListener,将ReferencedTraceListener更换成:Database Trace Listener,将Formatter指定为Text Formatter,如下图:

     

    8.同时将Category Sources-> General-> Formatted EventLog TraceListener中的ReferencedTraceListener也换成:Database Trace Listener,将Formatter指定为Text Formatter,如下图:。

     

    9.在你的web页中添加如下代码,测试日志记录功能:


    using System.Collections.Generic;

    using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
    using Microsoft.Practices.EnterpriseLibrary.Logging;
    using Microsoft.Practices.EnterpriseLibrary.Logging.Configuration;
    using Microsoft.Practices.EnterpriseLibrary.Logging.ExtraInformation;
    using Microsoft.Practices.EnterpriseLibrary.Logging.Filters;

    //

            LogEntry log 
    = new LogEntry();
            
    //事件ID
            log.EventId = 2000;
            
    //日志优先级
            log.Priority = 2;
            log.Severity 
    = System.Diagnostics.TraceEventType.Error;
            log.Title 
    = "日志标题";
            log.TimeStamp 
    = DateTime.Now;
            log.Message 
    = "Test LogEntry 1";
            

            
    //日志类别
            ICollection<string> coll = new List<string>();
            coll.Add(
    "General");
            log.Categories 
    = coll;

            
    //添加额外信息
            Dictionary<stringobject> dic = new Dictionary<stringobject>();
            dic.Add(
    "name""yaoyao");
            dic.Add(
    "sex""");
            dic.Add(
    "age""28");

            log.ExtendedProperties 
    = dic;
            
    //写入日志
            Logger.Write(log);

    打开数据库查看,正常的话,应该可以看见一条新记录。

    晚上写的,有点累了写的象流水帐,没什么心得可言,对于初次接触Logging的同行来说,希望能通过一个简单的过程,让自己的Logging跑起来,我的目标就达到了。其它的,各位看官有问题请回复,园子里有好多篇关于Logging Application Block 1.0/2.0的文章,可以搜索一下,另外2.0和3.0的Logging Block使用上并没有太大区别,可以参考一下。
  • 相关阅读:
    TextOut和DrawText
    VC中字符串定义
    #define new DEBUG_NEW
    洛谷【P2257】 YY的GCD
    Lizards and Basements 2 解题报告
    在windows服务中添加WCF
    从数据库中获得表的字段和描述信息
    sql格式化工具
    在XPSP3中添允许多个远程桌面的步骤
    无法连接到WCF的异常
  • 原文地址:https://www.cnblogs.com/inspurhaitian/p/1276720.html
Copyright © 2011-2022 走看看