Robin's Blog

记录 积累 学习 成长

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
使用企业类库进行日志处理-Special Sources用途*

1.      使用Logging Application Block

2.1.  配置Logging Application Block

1.         使用配置工具添加Logging Application Block节点

选择应用程序节点,执行New/Logging Application Block

2.         配置格式化器

选择Formatters节点,添加想要的格式化器。格式化器用来格式化日志信息。有三种类型的格式化器如下:

l  Binary Formatter

使用System.Runtime.Serialization.Formatters.Binary. BinaryFormatter进行格式化。

l  Custom Formatter

使用自定义格式化器。

l  TextFormatter

Enterprise Library内部定义的文本格式化器。

本例中,添加一个TextFormatter,设置TextFormatter的属性,如下:

l  Name

Value=TextFormatter

格式化器的名称,可以设置为任何有意义的名称

l  Template

Value=……

日志信息的模板信息,可以通过配置程序进行日志信息的配置,添加或者删除特定的信息项。

3.         配置Trace Listener

选择Trace Listener 节点,执行命令New/[Select Listener you want]。可以使用的Trace Listener有很多种,每种Trace Listener都有自己不同的配置,可根据具体的需求选择合适的Trace Listener。如果没有合适的Trace Listener可用可以使用自定制Trace Listener。此处,我们选择Flat File Trace Listener。该监听器会将日志信息写入一个文本文件中,它主要的配置属性如下:

l  Name

Value=FlatFileTraceListener

监听器的名称,可以设置为任何有意义的名称。

l  FileName

Value=trace.log

日志文件的全路径,如果没有路径信息,则以当前程序的执行目录作为日志文件的存放路径。如果文件不存在,那名创建该文件,如果文件已经存在,那名追加日志信息。

l  Filter

Value=All

过滤标志,根据日志信息中的Severity信息进行过滤,只记录那些符合过滤条件的日志。

l  Footer

Value=----------------------------------------

每次日志的完成的表示符号。

l  Fomatter

Value=TextFormatter

选择日志格式化器,可从所有可用的格式化器中选择。

l  Header

Value=----------------------------------------

每次日志开始时的标记符号。

l  TraceOutputOptions

Value=None

英文帮助文档对此属性的解释为:Trace listeners use this property to determine which options, or elements, should be included in the trace output. Possible values are: CallStack, DateTime, LogicalOperationStack, None, ProcessId, ThreadId, a Timestamp. The default is None. For an explanation of these values, see the TraceOutputOptions Values table. This is optional经过测试,发现更改此属性值对日志结果没有影响

4.         配置Special Source

Special Source用来处理那些用于特定情况下的日志信息,它主要分为如下三种:

l  All Events

处理未被处理的所有日志信息。

l  Logging Errors & Warnings

处理符合过滤条件的所有日志信息

l  Unprocessed Category

处理那些没有找到分类的日志信息。

5.         配置Category Source

Category Source表示日志的分类,显示在日志信息中是一个键值对,keyCategory,值为我们配置之后的值。执行命令New/Category,添加一个新的日志分类,它的可配置属性如下:

l  Name

Value= ExceptionCategory

可以命名为任何有意义的名称。

l  AutoFlush

Value=True

设置为true,指示处理程序在处理完一个日志写入操作后,立刻将内容刷新到磁盘上。设置为false表示需要在程序中明确调用刷新方法。

l  SourceLevels

Value=All

SourceLevel为日志属性Severity的值的组合。All表示允许所有日志对象写入日志。

6.         配置Filters

选择Filters节点,执行命令New/[Supported Filter]。可以添加一个Filter。一个Filter表示对日志信息的过滤处理,不符合Filter要求的日志信息将不会被写入日志文件。Filter的类型主要有以下几种:

l  Category Filter

分类过滤器,此过滤器可以实现如下过滤操作:

A.             除了指定的Category,允许所有的其它Category通过检查。

B.             除了指定的Category,不允许所有其它的Category通过坚持。

l  LogEnabled Filter

该过滤器指定是否启用日志。它有一个Enable属性,其值为false,则禁用日志功能,其值为true,则启用日志功能。

l  Priority Filter

优先级过滤器,可以指定此过滤器的两个属性MaximumPriorityMinimumPriority。日志对象的Priority属性值在这两个值之间,那么日志将会写入日志文件,否则将被忽略。

l  Custom Filter

自定义过滤器。可以实现自定义的日志过滤逻辑。

7.         配置Logging Application Block

对于Logging Application Block节点,主要的可配置属性有:

l  Default Category

默认的分类器,建立分类器时应该建立一个默认的分类器,如果日志对象没有设置分类器,那名将会由默认的分类器处理。默认分类器不会处理分类名称设置错误的日志,这种情况应该由Special Source处理。

l  LogWarningWhenNoCategoriesMatch

其值为true时,表示如果没有在配置文件中找到日志对象的分类信息,那名将该日志对象报告为一个错误日志(Severity=Error)。如果设置了Special SourceLogging Errors & Warnings,那名该Source将会记录该日志信息。

l  TraceEnabled

是否启用活动跟踪,与多线程跟踪有关,表示一个线程内的多个跟踪。未测试。

2.2.  保存配置

2.3.  在程序中使用日志功能

代码如下:

public static void SelectDataForLogging()

        {

            using (SqlConnection conn = new SqlConnection(

@"Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=True"))

            {

                conn.Open();

                SqlCommand command = new SqlCommand("select * from info", conn);

                command.ExecuteNonQuery();

               

                LogEntry logEntry = new LogEntry();

                logEntry.EventId = 100;

                logEntry.Priority = 2;

                logEntry.Message = "data from master database have been selected.";

                logEntry.Categories.Add("ExceptionCatalog");

                logEntry.Severity = System.Diagnostics.TraceEventType.Resume;

 

                Logger.Write(logEntry);

            }

        }

2.4.  使用Database Trace Listener

1.              创建日志数据库

Database Trace Listener将日志信息写入数据,要写入数据,必须配置Data Access Application Block。首先需要创建日志数据库。在命令行下执行CreateLoggingDb.cmd文件。该文件在Logging.Database工程下。执行完成,将会在执行的服务器中创建Logging数据库。

2.              添加Database Trace Listener

选择Trace Listener节点,执行命令New/Database Trace Listener

3.              配置Database Trace Listener

Database Trace Listener将日志信息写入数据,要写入数据,必须配置Data Access Application BlockDatabase Trace Listener的配置属性如下:

l  AddCategoryStoreProcedure

添加分类的存储过程名称。应该设置为与数据库中一致的值。

l  DatabaseInstance

数据库实例,应该设置为Data Access Application Block中配置的数据库实例。

l  Filter

设置日志过滤信息。

l  Formatter

日志格式化器设置。

l  TraceOutputOptions

跟踪输出选项。

l  WriteLogStoreProcedureName

写日志信息存储过程名称。

2.5.  为指定的Category Source选择该Database Listener

2.6.  运行2.3所示代码

posted on 2009-09-23 10:17  Robin99  阅读(342)  评论(0编辑  收藏  举报