TraceSource を使用して ASP.Net アプリケーションをログに記録しています。出力形式を変更するには、TextwriterListener の代わりに独自の TraceListener を作成する必要があります。
<trace>
<listeners>
<remove name="Default" />
<add name="Default"
type="WebTracing.CustomTraceListener, WebTracing" initializeData="Weblog.txt" traceOutputOptions="None"/>
</listeners>
</trace>
public class CustomTraceListener : TextWriterTraceListener
{
public override void Write(string message)
{
if (NeedIndent)
{
WriteIndent();
}
message = //customize format
base.Write(message);
}
public override void WriteLine(string message)
{
if (NeedIndent)
{
WriteIndent();
}
message = //customize format
base.WriteLine(message);
NeedIndent = true;
}
}
// 呼び出す
CustomTraceListener obj = new CustomTraceListener();
obj.TraceEvent(null, "This is a critical message", TraceEventType.Critical, 0);
(or)
obj.Write( "This is a critical message");
obj.Close();
エラーなし。出力ファイルにデータが印刷されません。私は ASP.Net を初めて使用します。この問題の解決を手伝ってくれる人はいますか?
アップデート
別の方法を試しました。ただし、構成エラーが発生します。
<trace autoflush="true" />
<sources>
<source name="Trace" switchName="mySwitch" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<remove name="Default" />
<add name="Default"
type="WebTracing.CustomTraceListener, WebTracing" initializeData="Weblog.txt" traceOutputOptions="None"/>
</listeners>
</source>
</sources>
<switches>
<add name="mySwitch" value="All"/>
</switches>
TraceSource obj = new TraceSource("Trace");
obj.TraceEvent(TraceEventType.Critical,0,"This is a critical message");
obj.Close();
例外の詳細: System.Configuration.ConfigurationErrorsException: WebTracing.CustomTraceListener、WebTracing を作成できませんでした。
注: 通常の TextWriterListener は正常に動作しています。しかし、出力文字列をフォーマットするにはカスタムリスナーが必要です。