WEB开发网
开发学院软件开发C语言 Effective C# 原则36:利用.Net运行时诊断 阅读

Effective C# 原则36:利用.Net运行时诊断

 2009-02-19 08:15:52 来源:WEB开发网   
核心提示: 如果你编辑了这个配置文件中开关的值,那么就修改了所有由那个开关控制的输出语句,Effective C# 原则36:利用.Net运行时诊断(3),另一个任务:你须要配置你的输出到什么地方去, 默认是一个链接到Trace类上的监听者:一个DefaultTraceListener对象,你可以小做

如果你编辑了这个配置文件中开关的值,那么就修改了所有由那个开关控制的输出语句。

另一个任务:你须要配置你的输出到什么地方去。 默认是一个链接到Trace类上的监听者:一个DefaultTraceListener对象。DefaultTraceListener发送信息到调试器,而且在它的失败方法(断言失败时调用)会打印一些诊断信息然后终止程序。在产品发布环境中,你不可能看到这样的信息。但你可是以配置不同的监听对象到产品发布环境中:那就是在应用程序的配置文件中添加监听者。下面就添加了一个TextWriterTraceListener 到应用程序中:

<system.diagnostics>
 <trace autoflush="true" indentsize="0">
  <listeners>
   <add name="MyListener"
    type="System.Diagnostics.TextWriterTraceListener"
    initializeData="MyListener.log"/>
  </listeners>
 </trace>
</system.diagnostics>

TextWriterTraceListener把所有的诊断信息到打印到一个MyListener.log文件中。名字属性指定了监听者的名字,类型指定了作者监听对象的类型,它必须是从System.Diagnostics.TraceListener派生下来的。只有在极少数情况下你才创建自己的监听类,那就是你觉得.Net框架的监听类不够用。initializeData的值是一个字符串,用于传给对象的构造函数。而TextWriterTraceListeners把它用于文件名。

你可以小做一个扩展,让它可以在应用中每个部署的程序集上都可以简单的使用。对于每个程序集,添加一个类来跟踪程序集创建的诊断:

internal class MyAssemblyDiagnostics
{
 static private TraceSwitch myAssemblySwitch =
  new TraceSwitch( "MyAssembly",
  "The switch for this assembly" );
 internal static void Msg( TraceLevel l, object o )
 {
  Trace.WriteLineIf( myAssemblySwitch.Level >= l,
   o, "MyAssembly" );
 }
 internal static void Msg( TraceLevel l, string s )
 {
  Trace.WriteLineIf( myAssemblySwitch.Level >= l,
   s, "MyAssembly" );
 }
 // Add additional output methods to suit.
}

上一页  1 2 3 4  下一页

Tags:Effective 原则 利用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接