定义跟踪源时,App Config中不支持属性跟踪模式

时间:2014-04-08 13:48:34

标签: c# .net app-config tracing

在app.config中有很多关于跟踪模式的教程。其中一个是http://msdn.microsoft.com/en-us/library/ty48b824%28v=vs.110%29.aspx,它应该与.Net框架的2-4.5版一起使用。

<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.Net" tracemode="includehex" maxdatasize="1024">
        <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="Verbose"/>
      <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="network.log"
      />
    </sharedListeners>
    <trace autoflush="true"/>
  </system.diagnostics>
</configuration>

在我的情况下,源属性被标记为无效/不可用。

- &GT; source name =“System.Net” tracemode =“includehex” maxdatasize =“1024”

我需要定义tracemode属性以禁用网络跟踪日志文件中的Hex输出。我搜索了varoius资源,但每个人只是说“不能,只是忽略错误”。但忽略没有帮助,只是跳过属性,使用默认值。

我无法通过代码使用跟踪,因为我需要直接跟踪无法直接定义的Net / Net.Sockets

我尝试使用两个版本的Visual Studio(2005年,2012年)和各种框架设置(2,3,4)在不同项目上进行设置,但没有任何帮助。

为什么属性标记为无效?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,但我意识到无法为我们要插入的源中列出的所有程序集指定属性tracemode。

即使VS代码编辑器将此属性提升为不允许,它也可以在System.Net程序集上运行,因此,对于每个子项(在我的情况下对我来说重要)。

这是一个功能web.config的结果示例:

<system.diagnostics>
<trace autoflush="true">
</trace>
<sources>
  <source name="System.Net" tracemode="protocolonly" switchValue ="All">
    <listeners>
      <add name="log4net" />
    </listeners>
  </source>
  <source name="System.Net.Cache" tracemode="protocolonly" switchValue ="All">
    <listeners>
      <add name="log4net" />
    </listeners>
  </source>
  <source name="System.Net.Http" tracemode="protocolonly" switchValue ="All">
    <listeners>
      <add name="log4net" />
    </listeners>
  </source>
  <source name="System.Net.HttpListener" tracemode="protocolonly" switchValue ="All">
    <listeners>
      <add name="log4net" />
    </listeners>
  </source>
  <source name="System.Net.Sockets" tracemode="protocolonly" switchValue ="All">
    <listeners>
      <add name="log4net" />
    </listeners>
  </source>
  <source name="System.ServiceModel" propagateActivity="true" switchValue ="All">
    <listeners>
      <add name="log4net" />
    </listeners>
  </source>
  <source name="System.Web.Services.Asmx" switchValue ="All">
    <listeners>
      <add name="log4net" />
    </listeners>
  </source>
</sources>

希望我的2美分帮助。

答案 1 :(得分:0)

在您发布的MSDN文章中,只需将tracemode设置为&#34; protocolonly&#34;并且不应该写入十六进制。