2011-08-10 6 views
2

System.Diagnostics.Traceクラスを使用して、アプリケーションのテキストファイルを簡単にトレースしたいと思っています。それはとてもシンプル:)ASP.NET 4での単純なトレース

なければならない...ので、私はこれを使用して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"); 

私は警告し、ERについてのラインを得ましたそれは私が期待していたものです。問題は、どのように私はSourceLevels列挙型に表示される残りのレベルを使用するのですか?

Webアプリケーション用に何か欠点がありますかSystem.Diagnostics.Traceを使用していますか? (自動フラッシュはテスト目的でのみtrueに設定されます)

乾杯。

答えて

5

もう少し構成が必要です。このコードブロックはすべてのエラーを1つのファイルに記録し、すべての情報と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

+0

そして、どのように私は例えば、SourceLevels.Critical System.Diagnostics.Traceを使用して、で物事を記録していますか? – vtortola

+0

switchValueノードまたはswitchesノードで、InformationまたはErrorをCriticalに置き換えます。 – BNL

+0

いいえ、私は、C#コードからSourceLevels.Criticalにどのようにログインできますか? Traceクラスには、 "Information"、 "Warning"、 "Error"のメソッドしかありませんが、残りのレベルを呼び出す方法はわかりません。 – vtortola

関連する問題