任务一:打开DataAccessApp 项目,继续前一个实验。
Demo2 使用编程的方法来配置Data Access Application Block
任务一:建立新的项目。
1. 打开Visual Studio 2008 ,单击“文件”,指向“新建”,选择“项目”。然后,在弹出的新建项目的窗体中选择“控制台应用程序”,在名称的文本框中输入LoggingAppTest , 如图2.1 所示。
图2.1 新建项目
任务二:新建类。选择LoggingAppTest 节点,右键单击,选择“添加”,指向“新建项”。在弹出的添加新项窗体中选择“类”,在名称文本框中输入MyLogger.cs 。如图2.2 所示
图 2.2 添加类
任务三:添加引用。
1. 找到“引用”文件夹,右键单击,并选择“添加引用”,在弹出的窗体中选择“浏览”,文件路径为“ ../ application/lib/.. ” , 选择Microsoft.Practice.EnterpriseLibrary.Logging.dll 和Microsoft.Practice.EnterpriseLibrary.Common.dll 文件。单击“确定”。如图2.3 所示。
图2.3 添加引用
2. 使用Using 语句添加命名空间到Logger.cs 类中。
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration ;
using Microsoft.Practices.EnterpriseLibrary.Logging;
using Microsoft.Practices.EnterpriseLibrary.Logging.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging.Filters;
using Microsoft.Practices.EnterpriseLibrary.Logging.Formatters;
using Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners;
任务四:添加代码。
1. 向Logger.cs 类中添加如下代码。
namespace EnoughPI.Logging
{
public static class MyLogger
{
static readonly LogWriter _writer;
// 日志记录的类别
const string ErrorCategory = "Error" ;
const string DebugCategory = "Debug" ;
// 文本文件路径
const string LoadFilePath = @"d://Share//message.log" ;
// 模板
const string Template = "Timestamp: {timestamp}{newline}" +
"Message: {message}{newline}" +
"Category: {category}{newline}" +
"Machine: {machine}{newline}" ;
static MyLogger()
{
// 使用前面定义的模板实例化一个TextFormatter
TextFormatter formatter = new TextFormatter (Template);
// 实例化TraceListener ,记录到文本文件用FlatFileTraceListener
FlatFileTraceListener logFileListener = new FlatFileTraceListener (LoadFilePath, "---------" , "---------" , formatter);
// 这里是TraceListeners 集合,可以添加多个
LogSource mainLogSource = new LogSource ("MainLogSource " ,System.Diagnostics.SourceLevels .All );
mainLogSource.Listeners.Add(logFileListener);
IDictionary <string , LogSource > traceSources = new Dictionary <string , LogSource >();
traceSources.Add(ErrorCategory, mainLogSource);
traceSources.Add(DebugCategory, mainLogSource) ;
// 用来表示不记录日志
LogSource nonExistantLogSource = new LogSource ("Empty" );
// 创建一个类别过滤器
ICollection <string > categoryfilters = new List <string >();
categoryfilters.Add(DebugCategory);
CategoryFilter categoryFilter = new CategoryFilter ("CategoryFilter" , categoryfilters, CategoryFilterMode .AllowAllExceptDenied);
// 把类别过滤器添加到集合中
ICollection <ILogFilter > filters = new List <ILogFilter >();
filters.Add(categoryFilter);
_writer = new LogWriter (filters, traceSources, nonExistantLogSource, nonExistantLogSource,mainLogSource ,ErrorCategory , false , true );
}
public static void Write(string message)
{
Write(message,ErrorCategory);
}
public static void Write(string message,string category)
{
LogEntry entry = new LogEntry ();
entry.Categories.Add(category);
entry.Message = message;
_writer.Write(entry );
}
}
}
2. 向Program.cs 文件中添加如下代码。
namespace EnoughPI.Logging
{
class Program
{
static void Main(string [] args)
{
MyLogger .Write("MyError" );
MyLogger .Write("My Debug" ,"Debug" );
}
}
}
任务五:运行程序。在D:/Share 文件夹中将找到刚刚运行的日志。如图2.4 所示。
图2.4 日志