System.Diagnostics
代码协定
.NET 4在System.Diagnostics.Contracts名称空间中包含的类可用于静态检查代码和在运行期间检查代码,这些类可由所有的.NET语言使用。
利用这个功能可以定义方法中的前提条件、后置条件和常量。
前提条件检查传递给方法的参数。Requires()和Rquires<TException>()方法是可以用Contract类定义的前提条件
后置条件定义了方法执行完后共享数据和返回值的保证。Ensure()和EnsuresOnThrow<TException>()方法是后置条件
常量为方法生命周期中的变量定义了协定。Contract.Invariant()方法定义了在方法的整个生命周期中都必须满足的条件
接口的协定 ContractClass特性
跟踪
TraceSource类可以写入跟踪消息。跟踪需要编译器设置的Trace标志
跟踪的配置在<system.diagnostics>元素中完成
跟踪开在<switches>中定义
侦听器<Listeners>
侦听器应由多个跟踪源使用<sharedListeners>
每个侦听器都有一个Filter属性,它定义了侦听器是否应写入跟踪消息
事件日志
EventLog类读写事件日志
使用EventLog类或EventLogInstaller类的CreateEventSource()方法。创建事件源
日志文件位于<windows>\System32\WinEvt\Logs目录
要写入事件日志项,可以使用EventLog类的WriteEntry()或WriteEvent()方法
资源文件,扩展名.mc
使用消息编译器mc.exe,创建一个二进制的消息文件。示例:
mc -s EventLogMessages.mc
性能监控
System.Diagnostics名称空间为性能监控提供了如下类:
PerformanceCounter类可以用于监控计数和写入计数
PerformanceCounterCategory类可以查看所有已有的类别,以及创建新类别。
PerformanceCounterInstaller类用于安装性能计数器,它的用法类似于前面讨论的EventLogInstaller类。