我正在使用 TraceSource 来记录 ASP.Net 应用程序。要更改输出格式,我需要创建自己的 TraceListener 而不是 TextwriterListener。
<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 工作正常。但我需要自定义侦听器来格式化输出字符串。