我试图通过指向文件位置的TextWriterTraceListener跟踪我的Windows窗体应用程序中发生的奇怪事情.我设置它是为了在应用程序第一次需要在程序运行期间跟踪某些内容时,它会创建跟踪侦听器并对其进行注册.
但是,看起来根本没有创建跟踪文件,在C:\ GMS2Trace.log中没有显示任何内容.我已经验证程序已经到达了调用trace方法的部分代码.
我的跟踪代码如下:
internal static void traceWarning(string message)
{
if (!traceEnabled)
{
traceEnabled = true;
Trace.Listeners.Add(new TextWriterTraceListener(@"C:\GMS2Trace.log"));
}
Trace.TraceWarning(getTimeStamp() + " " + message);
}
Run Code Online (Sandbox Code Playgroud)
跟踪文件的位置或其他问题是否存在问题?
DNR*_*NRN 18
您可以从app.config配置它,只需使用:
Trace.Writeline("msg");
Run Code Online (Sandbox Code Playgroud)
我的一个项目示例:
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="log.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
请记住,所有Console.Writeline都会在文件中结束
ADI*_*IMO 10
加
Trace.AutoFlush = true;
Run Code Online (Sandbox Code Playgroud)
添加监听器之后
小智 5
你可以在代码中做到:
string traceFileLocation = "yourFileName";
TraceSource traceSource;
TextWriterTraceListener traceListener;
traceSource = new TraceSource("your source name");
traceListener = new TextWriterTraceListener(traceFileLocation);
traceListener.TraceOutputOptions = TraceOptions.LogicalOperationStack |
TraceOptions.DateTime |
TraceOptions.Timestamp |
TraceOptions.ProcessId |
TraceOptions.ThreadId;
traceSource.Switch = new SourceSwitch("someName","some Name");
traceSource.Switch.Level = SourceLevels.Information;
traceSource.Listeners.Clear();
traceSource.Listeners.Add(traceListener);
Trace.AutoFlush = true;
Trace.CorrelationManager.StartLogicalOperation("logical operation");
traceSource.TraceEvent(TraceEventType.Error, (int)TraceEventType.Error, "messsage");
Trace.CorrelationManager.StopLogicalOperation();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26404 次 |
| 最近记录: |