从Trace输出中删除Project Name.vshost.exe
本文关键字:Name vshost exe Project 删除 Trace 输出 | 更新日期: 2023-09-27 18:01:27
我在控制台应用程序上定义了一个跟踪侦听器,如下所示
ConsoleTraceListener = new ConsoleTraceListener();
AutoFlush = true;
Listeners.Add(traceListener);
然后几个Trace.TraceInformation
调用我所有的源代码。
- MyNewSampleProject.vshost.exe信息:0:Starting…
- MyNewSampleProject.vshost.exe信息:0:Creating Profile.
我怎样才能摆脱
MyNewSampleProject.vshost.exe信息:0:.
我只是想知道我在Trace中设置的消息。
谢谢!
不幸的是,这似乎是不可能的。
我反编译了这个监听器,发现没有这个选项。但还是有希望的。
你可以这样实现你自己的监听器:
public class MyListener : ConsoleTraceListener {
public override void TraceEvent(TraceEventCache eventCache, string source, TraceEventType eventType, int id, string message) {
if (this.Filter != null && !base.Filter.ShouldTrace(eventCache, source, eventType, id, message, null, null, null))
return;
this.WriteLine(message);
this.WriteFooter(eventCache);
}
private bool IsEnabled(TraceOptions opts) {
return (uint) (opts & this.TraceOutputOptions) > 0U;
}
private void WriteFooter(TraceEventCache eventCache) {
if (eventCache == null)
return;
this.IndentLevel = this.IndentLevel + 1;
if (this.IsEnabled(TraceOptions.ProcessId))
this.WriteLine("ProcessId=" + (object) eventCache.ProcessId);
if (this.IsEnabled(TraceOptions.LogicalOperationStack)) {
this.Write("LogicalOperationStack=");
Stack logicalOperationStack = eventCache.LogicalOperationStack;
bool flag = true;
foreach (object obj in logicalOperationStack) {
if (!flag)
this.Write(", ");
else
flag = false;
this.Write(obj.ToString());
}
this.WriteLine(string.Empty);
}
if (this.IsEnabled(TraceOptions.ThreadId))
this.WriteLine("ThreadId=" + eventCache.ThreadId);
if (this.IsEnabled(TraceOptions.DateTime))
this.WriteLine("DateTime=" + eventCache.DateTime.ToString("o", (IFormatProvider) CultureInfo.InvariantCulture));
if (this.IsEnabled(TraceOptions.Timestamp))
this.WriteLine("Timestamp=" + (object) eventCache.Timestamp);
if (this.IsEnabled(TraceOptions.Callstack))
this.WriteLine("Callstack=" + eventCache.Callstack);
this.IndentLevel = this.IndentLevel - 1;
}
}