我正在使用 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 工作正常。但我需要自定义监听器来格式化输出字符串。
最佳答案
我建议你给你的类添加 public 修饰符
你可以使用
System.Diagnostics.Trace.Write method
关于asp.net - 跟踪源 : Custom TraceListener not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502068/