Welcome 微信登录

首页 / 网页编程 / ASP.NET / Enterprise Library 2.0 技巧(4):如何用编程的方法来配置Logging Applicat

Enterprise Library 2.0 技巧(4):如何用编程的方法来配置Logging Applicat2010-05-15 cnblogs TerryLeeEnterprise Library 2.0 技巧(4):如何用编程的方法来配置Logging Application Block

在本系列的技巧(1)和技巧(2)中分别介绍了使用外部配置文件,使用数据库记录配置信息两种方法,不知道大家有没有想过不使用任何配置文件,也不使用数据库而直接用编程的方法来实现呢?本文将会展示如何使用编程的方法来配置Logging Application Block。首先我们需要了解一下Logging Application Block中比较重要的几个对象:

1.LogFormatter

格式化对象,LogFormatter有TextFormatter和BinaryFormatter两种,多数情况下我们会使用TextFormatter,它通过一个Template来创建,一个完整的Template格式如下:

Timestamp: {timestamp}{newline}
Message: {message}{newline}
Category: {category}{newline}
Priority: {priority}{newline}
EventId: {eventid}{newline}
Severity: {severity}{newline}
Title:{title}{newline}
Machine: {machine}{newline}
Application Domain: {appDomain}{newline}
Process Id: {processId}{newline}
Process Name: {processName}{newline}
Win32 Thread Id: {win32ThreadId}{newline}
Thread Name: {threadName}{newline}
Extended Properties: {dictionary({key} - {value})}{newline}

这里就不具体解释每一项的含义,大家可以参考有关文档,示例代码:

const string Template = "Timestamp: {timestamp}{newline}" +
"Message: {message}{newline}" +
"Category: {category}{newline}" +
"Machine: {machine}{newline}";
TextFormatter formatter = new TextFormatter(Template);

2.TraceListener

TraceListener提供了日志记录服务,它指定的是日志将被记录到何处,数据库中或者是文本文件,Enterprise Library提供了7种

TraceListener:Database TraceListener、Email TraceListener、Flat File TraceListener、Formatter Event Log TraceListener、Msmq TraceListener、System Diagnostics TraceListener、WMI Trace Listener。每一种TraceListener都需要一个LogFormatter来对记录的信息进行格式化,例如创建一个FlatFileTraceListener实例:

const string LogFilePath = @"d:\share\messages.log";
FlatFileTraceListener logFileListener =
new FlatFileTraceListener(LogFilePath,"----------","----------", formatter);

这里的formatter就是在上面创建的TextFormatter对象。

3.LogSource

LogSource其实就是TraceListener的集合,Enterprise Library允许针对不同的日志信息记录到不同地方,因此可以在LogSource中加入多个TraceListener:

LogSource mainLogSource =

new LogSource("MainLogSource", SourceLevels.All);

mainLogSource.Listeners.Add(logFileListener);