ASP.NET 4中的简单跟踪

时间:2011-08-10 18:41:39

标签: asp.net asp.net-mvc-3 tracing

我想使用System.Diagnostics.Trace类在文本文件中执行应用程序的简单跟踪。我想使用它而不是log4net或任何其他解决方案的原因是因为......它必须简单:)

所以,我在C#中使用了这个:

        TextWriterTraceListener listener = new TextWriterTraceListener(Server.MapPath("~/App_Data/log.txt"));
        listener.Filter = new EventTypeFilter(SourceLevels.Warning);
        Trace.Listeners.Add(listener);

或者它在Web.config中的等价物:

  <system.diagnostics>
    <sharedListeners>
      <add name="log" type="System.Diagnostics.TextWriterTraceListener" initializeData="App_Data/log.txt">
        <filter type="System.Diagnostics.EventTypeFilter"  initializeData="Warning" />
      </add>
    </sharedListeners>
    <trace autoflush="true">
      <listeners>
        <clear/>
        <add name="log"/>
      </listeners>
    </trace>
  </system.diagnostics>

所以当我执行这个时:

        Trace.TraceInformation("info");
        Trace.TraceWarning("warning");
        Trace.TraceError("error");

我得到了关于警告和错误的信息,这就是我所期待的。问题是,如何使用SourceLevels枚举中出现的其他级别?

Web应用程序是否有任何缺点或使用System.Diagnostics.Trace? (autoflush设置为true仅用于测试目的)

干杯。

1 个答案:

答案 0 :(得分:5)

您需要更多配置。此代码块将所有错误记录到一个文件,将所有Information和ActivityTracing节点记录到另一个文件。 (此示例适用于WCF,您需要将您的名称设置为您需要的名称。)

<system.diagnostics>
<sources>
  <source name="System.ServiceModel"
          switchValue="Information, ActivityTracing"
          propagateActivity="true" >
    <listeners>
      <add name="xml"/>
    </listeners>
  </source>
  <source name="System.ServiceModel.MessageLogging">
    <listeners>
      <add name="xml"/>
    </listeners>
  </source>
  <source name="ServiceFaultInfoTrace"
          switchName="sourceSwitch"
          switchType="System.Diagnostics.SourceSwitch">
    <listeners>
      <add name="ServiceFaultInfoTraceText" />
      <remove name="Default"/>
    </listeners>
  </source>
</sources>
<switches>
  <add name="sourceSwitch" value="Error"/>
</switches>
<trace autoflush="true" indentsize="4">
  <listeners>
    <add name="ServiceFaultInfoTraceText" />
  </listeners>
</trace>
<sharedListeners>
  <add name="xml"
       type="System.Diagnostics.XmlWriterTraceListener"
       initializeData="C:\log\Api-Traces.svclog" />
  <add name="ServiceFaultInfoTraceText"
       type="System.Diagnostics.TextWriterTraceListener"
       traceOutputOptions="DateTime"
       initializeData="C:\log\Api-Errors.txt" />
</sharedListeners>
</system.diagnostics>

重要节点是switchValue(和switchName)节点。将它们设置为您要为源记录的任何级别。

http://msdn.microsoft.com/en-us/library/system.diagnostics.tracelevel.aspx