11

我有如下配置其跟踪源的应用程序:

        var traceSource = new TraceSource("MyTraceSource");
        traceSource.Switch = new SourceSwitch("MyTraceSwitch") { **Level = SourceLevels.Information** };

        var traceListener = new TextWriterTraceListener(logFilePath);
        traceListener.TraceOutputOptions = TraceOptions.DateTime;

        traceSource.Listeners.Clear();
        traceSource.Listeners.Add(traceListener);

        Trace.AutoFlush = true;

应用程序始终使用此跟踪源来跟踪事件。请注意,SourceLevels.Information 在跟踪开关中是硬编码的。现在我需要将跟踪开关级别更改为详细。是否可以通过 app.config 文件完成?我尝试了许多 xml-configs 但失败了。注意我不能只更改 app.config 的源代码。

4

4 回答 4

7

我不确定您是否正在搜索类似的东西,但我曾经使用过以下 xml 配置:change the trace switch level to Verbose.(App-Config)

  <configuration>
        <system.diagnostics>
            <switches>
            <add name="AppTraceLevel" value="4" /> //4 = Verbose
            </switches>
            // Here would be the Trace Tag with the Listeners (not important for your question)
        </system.diagnostics>
    </configuration>

也许它有帮助

于 2013-02-18T08:13:28.160 回答
3

好吧 -配置跟踪明确指定:

  <sources>
        <source name="System.ServiceModel" 
                switchValue="Information, ActivityTracing"
                propagateActivity="true">
        </source>
  </sources>

跟踪级别部分描述了一些细节。

于 2013-02-18T08:14:09.967 回答
2

以上两个答案都有价值。这是完整的回复。将此部分添加到您的配置中:

<system.diagnostics>
<sources>
  <source name="MyTraceSource" switchValue="Information">
    <listeners>
      <add name="file" initializeData="c:\temp\logpath.txt" traceOutputOptions="DateTime" type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

    </listeners>
  </source>
</sources>
</system.diagnostics>
于 2013-02-23T04:34:56.103 回答
0

在原始问题(vkrzv 的帖子)中,听众被删除是一个问题:

traceSource.Listeners.Clear();

在 app.config 中添加了监听器的原因(在 Glenn Ferries 精彩的解决方案中。我非常喜欢它。谢谢。)将被删除。

因此,完整的解决方案之一就在这里。您将在 c:\temp 文件夹中有 2 个日志文件:logcode.txt 和 logappconfig.txt

代码:

var traceSource = new TraceSource("MyTraceSource");

var traceListener = new TextWriterTraceListener(@"c:\temp\logcode.txt");
traceListener.TraceOutputOptions = TraceOptions.DateTime;

//traceSource.Listeners.Clear(); //we do not want to delete the listener
traceSource.Listeners.Add(traceListener);

Trace.AutoFlush = true;

应用程序配置:

<system.diagnostics>
<sources>
  <source name="MyTraceSource" switchValue="Information">
    <listeners>
      <add name="file" initializeData="c:\temp\logappconfig.txt" traceOutputOptions="DateTime" type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </listeners>
  </source>
</sources>
</system.diagnostics>
于 2020-11-19T18:32:42.580 回答