1

在阅读了这个这个msdn 链接之后,我需要在我正在开发的 Web 应用程序中使用TraceSource.TraceEvent

我正在处理一个已经构建的项目,我正在对其进行更改并更新它。

这就是我的 web.config 的定义方式。

<system.diagnostics>
<sources>
    <listeners>
    <clear/>
    <add name="xml"/>
  </listeners>
</sources>

<sharedListeners>
  <add name="xml" type="System.Diagnostics.XmlWriterTraceListener"
                           traceOutputOptions="Callstack,LogicalOperationStack,ProcessId"
                           initializeData="C:\logs\Test.svclog"/>
</sharedListeners>

<trace autoflush="true" />

 </system.diagnostics>

我尝试使用的代码

var traceSource = new TraceSource("TraceSourceName");
traceSource.TraceEvent(TraceEventType.Error, 2, "Hello World !");

但是没有记录到 Test.svclog 文件,我在 C:\logs\ 文件夹下创建了一个空文件 Test.svclog。

请帮我解决这个问题。

4

3 回答 3

1

我想你忘了关闭你的来源。

只需将您的代码修改为此

var traceSource = new TraceSource("TraceSourceName");
traceSource.TraceEvent(TraceEventType.Error, 2, "Hello World !");
traceSource.Close();
于 2012-08-07T13:16:50.963 回答
0

您可以使用 msdn 上的这篇文章调整您的源代码部分

http://msdn.microsoft.com/en-us/library/ms228984(v=vs.90).aspx

于 2012-08-07T12:12:45.367 回答
0

您可以使用Nlog更好地控制日志记录,因为它也带有内置的 TraceListener 侦听器:

如果您TraceSource在 dll 文件中定义为:


//dll_01.dll
var traceSource = new TraceSource("TraceSource1");
traceSource.TraceEvent(TraceEventType.Error, 2, "Hello World from dll 01!");

//dll_02.dll
var traceSource = new TraceSource("TraceSource2");
traceSource.TraceEvent(TraceEventType.Error, 2, "Hello World from dll 02!");

//dll_03.dll
var traceSource = new TraceSource("TraceSource3");
traceSource.TraceEvent(TraceEventType.Error, 2, "Hello World from dll 03!");

然后您可以添加nlog为共享侦听器并可以将您的配置App.Config

<system.diagnostics>
    <sources>
      <source name="TraceSource1" switchValue="All">
        <listeners><add name="nlog" /></listeners>
      </source>
      <source name="TraceSource2" switchValue="All">
        <listeners><add name="nlog" /></listeners>
      </source>
      <source name="TraceSource3" switchValue="All">
        <listeners><add name="nlog" /></listeners>
      </source>   
    </sources>
    <sharedListeners>
      <add name="nlog" type="NLog.NLogTraceListener, NLog" />
    </sharedListeners>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="nlog" />
        <remove name="Default" />
      </listeners>
    </trace>
</system.diagnostics>

其余配置将在nLog配置文件中完成。

于 2022-01-13T09:37:08.467 回答