您的位置:首页 > 其它

使用企业类库进行日志处理

2008-09-26 11:33 417 查看

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[/b]. 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表示日志的分类,显示在日志信息中是一个键值对,key为Category,值为我们配置之后的值。执行命令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
优先级过滤器,可以指定此过滤器的两个属性MaximumPriority和MinimumPriority。日志对象的Priority属性值在这两个值之间,那么日志将会写入日志文件,否则将被忽略。
l Custom Filter
自定义过滤器。可以实现自定义的日志过滤逻辑。
7. 配置Logging Application Block
对于Logging Application Block节点,主要的可配置属性有:
l Default Category
默认的分类器,建立分类器时应该建立一个默认的分类器,如果日志对象没有设置分类器,那名将会由默认的分类器处理。默认分类器不会处理分类名称设置错误的日志,这种情况应该由Special Source处理。
l LogWarningWhenNoCategoriesMatch
其值为true时,表示如果没有在配置文件中找到日志对象的分类信息,那名将该日志对象报告为一个错误日志(Severity=Error)。如果设置了Special Source:Logging 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 Block。Database 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所示代码

可以看到数据库已经存在日志数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: