C# TraceListener不会输出所有跟踪
我已使用以下C# TraceListener不会输出所有跟踪,c#,trace,tracelistener,C#,Trace,Tracelistener,我已使用以下TraceListener <system.diagnostics> <trace autoflush="true" indentsize="4"> <listeners> <add name="myListener" type="MyApp.RollTraceListener, MyApp" initializeData="myapplication.log" /> <add name="li
TraceListener
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="MyApp.RollTraceListener, MyApp" initializeData="myapplication.log" />
<add name="listener" type="System.Diagnostics.TextWriterTraceListener" initializeData="application.log" />
</listeners>
</trace>
</system.diagnostics>
通常,如果我只写
System.Diagnostics.Trace.WriteLine(“helloworld!”)代码>该行出现在application.log中,但不在myapplication.log中好的,我只是做了同样的操作,但没有在app.config中配置它,而是在启动时通过代码声明侦听器,并在退出应用程序时刷新/关闭流。它很好用,可能还没冲洗过。RollTraceListener将是静态的,即为AppDomain的生命周期而生存。试着在每次书写后冲洗。
public class RollTraceListener : System.Diagnostics.TraceListener
{
string fileName;
DateTime startDate;
StreamWriter traceWriter;
public RollTraceListener(string fileName)
{
this.fileName = fileName;
this.startDate = System.DateTime.Now;
var stream = new FileStream(this.fileName, FileMode.Create);
traceWriter = new StreamWriter(stream);
}
public override void Write(string value)
{
traceWriter.Write(value);
}
public override void WriteLine(string value)
{
traceWriter.WriteLine(value);
}
protected override void Dispose(bool disposing)
{
if(disposing)
{
traceWriter.Flush();
traceWriter.Close();
}
}
}