<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sources>
<source name="System.Net">
<listeners>
<add name="System.Net"/>
</listeners>
</source>
<source name="System.Net.Sockets" >
<listeners>
<add name="System.Net"/>
</listeners>
</source>
<source name="System.Net.Cache">
<listeners>
<add name="System.Net"/>
</listeners>
</source>
</sources>
<switches>
<add name="System.Net" value="31" />
<add name="System.Net.Sockets" value="Verbose" />
<add name="System.Net.Cache" value="Verbose" />
</switches>
<sharedListeners >
<add name="System.Net"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="my.log"
/>
</sharedListeners>
<trace autoflush="true">
</trace>
</system.diagnostics>
</configuration>
C#网络编程中,微软的vs2010提供了相关的跟踪方法,便于开发人员得到网络通信的信息,具体配置如下:
Trace实现网络跟踪记录,需要添加app.config文件(右键某project的add new item,选择添加一个xml文件就可以,文件名填写为app.config),之后要将相关的配置信息(如上所示的xml)。
这些节点的具体用途还没有弄清楚,只是知道sources节点必须要和switches下的节点对应起来,才能追踪并输出结果。sources下的source节点的name为想要追踪的dll名,listener节点下的add节点的name为添加到名字为System.Net(自定义名字,和system.Net这个dll一点关系都没有)的listener(在sharedListener处要用到)。
影响输出结果的主要是在switches节点下add节点的value值。此处value一个枚举类型,可以写入int或者枚举对应的string(31,Verbose)。
输出log的存储路径写在sharedListeners节点下add节点的initializeData属性后。
运行程序,你就会看到log打出了。在vs2010下的output窗口,也会有同样的信息。
以下为value值对应的enum。
public enum SourceLevels
{
All = -1,
Off = 0,
Critical = 1,
Error = 3,
Warning = 7,
Information = 15,
Verbose = 31,
ActivityTracing = 65280,
}