发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
Lab 4: Create and Use a Custom Trace Listener 创建和使用自定义跟踪监听器
In this lab, you will build a custom Trace Listener to send formatted log entries to the Console standard output. You will then add this new Trace Listener to the EnoughPI application and monitor the log entries in real-time. 在这个实验中,你将会创建一个自定义的跟踪监听器来将格式化后的日志条目发送到控制台标准输出。之后你将会添加这个新的跟踪监听器到EnoughPI程序并实时监视日志条目。
To begin this exercise, open the EnoughPI.sln file located in the ex04\begin folder. 打开ex04\begin文件夹中的EnoughPI.sln文件来开始这个练习。
To create a custom Trace Listener 创建一个自定义跟踪监听器
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging;
using Microsoft.Practices.EnterpriseLibrary.Logging.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners;
1 [ConfigurationElementType(typeof(CustomTraceListenerData))] 2 public class ConsoleTraceListener : CustomTraceListener 3 { 4 public ConsoleTraceListener() 5 : base() 6 { 7 } 8 9 public ConsoleTraceListener(string del) 10 { 11 this.Attributes["delimiter"] = del; 12 } 13 14 public override void TraceData(TraceEventCache eventCache, 15 string source, TraceEventType eventType, int id, object data) 16 { 17 if (data is LogEntry && this.Formatter != null) 18 { 19 this.WriteLine(this.Formatter.Format(data as LogEntry)); 20 } 21 else 22 { 23 this.WriteLine(data.ToString()); 24 } 25 } 26 27 public override void Write(string message) 28 { 29 Console.Write(message); 30 } 31 32 public override void WriteLine(string message) 33 { 34 // Delimit each message 35 Console.WriteLine((string)this.Attributes["delimiter"]); 36 // Write formatted message 37 Console.WriteLine(message); 38 } 39 }
Note: The base class is CustomTraceListener, which mandates that you override two abstract methods: Write(string message) and WriteLine(string message). However, to format the message we need to override the TraceData method.
主意:基类是CustomTraceListener,其要求你重载两个抽象方法:Write(string message) 和 WriteLine(string message)。不过格式化消息我们还需要重载TraceData方法。
The ConsoleTraceListener is expecting a parameter, delimiter, as part of the listener configuration. ConsoleTraceListener类期望一个参数: delimiter,作为监听器配置的一部分。
To use a custom Trace Listener 使用自定义的跟踪监听器
1 private static LoggingConfiguration BuildProgrammaticConfig() 2 { 3 // Formatter 4 TextFormatter formatter = new TextFormatter(@"Timestamp: 5 {timestamp(local)}{newline}Message: {message}{newline}Category: 6 {category}{newline}Priority: {priority}{newline}EventId: 7 {eventid}{newline}ActivityId: 8 {property(ActivityId)}{newline}Severity: 9 {severity}{newline}Title:{title}{newline}"); 10 11 // Trace Listeners 12 var eventLog = new EventLog("Application", ".", "EnoughPI"); 13 var eventLogTraceListener = new 14 FormattedEventLogTraceListener(eventLog, formatter); 15 var flatFileTraceListener = new 16 FlatFileTraceListener( 17 @"C:\Temp\trace.log", 18 "----------------------------------------", 19 "----------------------------------------", 20 formatter); 21 22 var customTraceListener = 23 new EnoughPI.Logging.TraceListeners.ConsoleTraceListener( 24 "-----------------------"); 25 26 // Build Configuration 27 var config = new LoggingConfiguration(); 28 config.AddLogSource( 29 Category.General, 30 SourceLevels.All, 31 true).AddTraceListener(eventLogTraceListener); 32 config.AddLogSource( 33 Category.Trace, 34 SourceLevels.ActivityTracing, 35 true).AddTraceListener(flatFileTraceListener); 36 37 config.LogSources[Category.General].AddTraceListener( 38 customTraceListener); 39 config.IsTracingEnabled = true; 40 41 return config; 42 }
Because the LogSource named Category.General already exists, you can add another trace listener to it by referencing the LogSource by name, as above. 因为叫做Category.General 的LogSource已经存在,所以你可以通过引用LogSource的名字来添加另一个跟踪监听器到其中,如上面代码所示。
Note: You will remember your ConsoleTraceListener is expecting a parameter named delimiter, which is printed before each formatted log entry is written to the console.
注意:你还记得你的ConsoleTraceListener需要一个名为delimiter的参数,它将在在每个日志条目被输出到控制台之前打印出来。
1 private static LoggingConfiguration BuildProgrammaticConfig() 2 { 3 // Formatter 4 TextFormatter formatter = new TextFormatter(@"Timestamp: 5 {timestamp(local)}{newline}Message: {message}{newline}Category: 6 {category}{newline}Priority: {priority}{newline}EventId: 7 {eventid}{newline}ActivityId: {property(ActivityId)}{newline}Severity: 8 {severity}{newline}Title:{title}{newline}"); 9 10 // Trace Listeners 11 var eventLog = new EventLog("Application", ".", "EnoughPI"); 12 var eventLogTraceListener = 13 new FormattedEventLogTraceListener(eventLog, formatter); 14 var flatFileTraceListener = 15 new FlatFileTraceListener( 16 @"C:\Temp\trace.log", 17 "----------------------------------------", 18 "----------------------------------------", 19 formatter); 20 var customTraceListener = 21 new EnoughPI.Logging.TraceListeners.ConsoleTraceListener( 22 "----------------------"); 23 customTraceListener.Formatter = formatter; 24 25 // Build Configuration 26 var config = new LoggingConfiguration(); 27 config.AddLogSource( 28 Category.General, 29 SourceLevels.All, 30 true).AddTraceListener(eventLogTraceListener); 31 config.AddLogSource( 32 Category.Trace, 33 SourceLevels.ActivityTracing, 34 true).AddTraceListener(flatFileTraceListener); 35 config.LogSources[Category.General].AddTraceListener( 36 customTraceListener); 37 38 39 config.IsTracingEnabled = true; 40 41 return config; 42 }
To view the Trace Listener output查看跟踪监听器的输出
To verify that you have completed the exercise correctly, you can use the solution provided in the ex04\e
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
引用 怎么把别人博客上的好东西搬到自己的博客上
引用 怎么把别人博客上的好东西搬到自己的博客上引用 怎么把别人博客上的好东西搬到自己的博客上。教你怎么把别人博客上的好东西(自定义模块)搬到自己的博客上来,本操作同。比方说我在别人的博客上看到...
Flex Builder教程
} </mx:Style> <mx:Button/>//外载入SWF程序<mx:SWFLoader id="loader1" source="FlexApp.swf"/>//内嵌入SWF程序<mx:SWFLoader id="loader2&qu...
在 .NET 程序中启用调试信息输出
Net 平台下,我们只需要简单的调用 Trace 和 Debug 这两个类,即可实现大部分调试输出。最大的区别在于,Debug 类仅在 Debug 模式下编译有效,而 Trace 类在 Debug 和 Release 模式下均可工作。这是因...
适用于每个LabVIEW开发者的巧妙调试技巧
如果您正在使用LabVIEW 2011,您还可通过单击LabVIEW入门指南窗口的“查找LabVIEW附加工具...”从LabVIEW工具网络上获取ViBox。如果要调...
20应用程序,让你更健康
这个免费的iOS应用程序可以让你加入一个健身社区,在这里,你可以学习新的锻炼和分享一些与他人,同时获得一些提示,为自己的回报。这个...
Asp.Net Trace 全功略
Net Trace 全功略Asp.Net Trace 全功略【摘要】ASP.NET的跟踪功能比ASP有了很大的提高,通过跟踪信息有利于判断WEB应用程序中错误的根源。ASP.NET使用TraceContext类来存储有关请求的信息、它的控件层...
基础: Windows Workflow Foundation 中的跟踪服务(转与 MSDN)
Windows Workflow Foundation 中的跟踪服务。因此,跟踪侦听器将查询各配置的跟踪服务以跟踪各类工作流的配置文件。每个跟踪服务都必须...
超全!年薪40w项目经理都在用的10个管理工具
Zoho Projects是卓豪旗下的一款热门产品,它的核心功能包括:项目计划、协调团队、管理工程进度与流程等。在规划、组织并跟踪团队的任务...
Powerful Cookies:清除上网记录
点击主窗口中的"选项"按钮,打开"配置Powerful Cookies"对话框,出现六个选项夹,分别是:常规、高级、粉碎、计划...
微信扫码,在手机上查看选中内容