【发布时间】:2010-10-26 04:35:17
【问题描述】:
在我的 C# .NET 应用程序中,我遇到了 Trace.WriteLine() 方法的问题。我经常使用这种方法,每次使用时都想添加一个TimeStamp。
除了 Trace.WriteLine(DateTime.Now + "Something wrong!") ,有没有解决方案默认 DateTime ?
【问题讨论】:
标签: c# debugging timestamp trace
在我的 C# .NET 应用程序中,我遇到了 Trace.WriteLine() 方法的问题。我经常使用这种方法,每次使用时都想添加一个TimeStamp。
除了 Trace.WriteLine(DateTime.Now + "Something wrong!") ,有没有解决方案默认 DateTime ?
【问题讨论】:
标签: c# debugging timestamp trace
您可以配置 TraceOutputOptions 标志枚举。
var listener = new ConsoleTraceListener() { TraceOutputOptions = TraceOptions.Timestamp | TraceOptions.Callstack };
Trace.Listeners.Add(listener);
Trace.TraceInformation("hello world");
这不适用于 Write 和 WriteLine,您使用了 TraceXXX 方法。
这也可以在您的 App.config 中配置,具有一定的等效性并使用 TraceSource:
<configuration>
<system.diagnostics>
<trace autoflush="true">
<sources>
<source name="TraceSourceApp">
<listeners>
<add name="myListener" type="System.Diagnostics.ConsoleTraceListener" traceOutputOptions="Timestamp" />
</listeners>
</source>
</sources>
</trace>
</system.diagnostics>
</configuration>
在代码中你可以:
private static TraceSource mySource =
new TraceSource("TraceSourceApp");
static void Main(string[] args)
{
mySource.TraceInformation("hello world");
}
【讨论】:
您可以将app.config 文件设置为使用traceOutputOptions 为所有跟踪侦听器使用时间戳(相对时间和当前时间)
traceOutputOptions = "DateTime, Timestamp";
【讨论】:
只需编写您自己的“TraceLine(string msg)”方法并开始调用它:
void TraceLine(string msg, bool OmitDate)
{
if (!OmitDate)
msg = DateTime.Now + " " + msg;
Trace.WriteLine(msg);
}
void TraceLine(string msg) {TraceLine(msg, false);}
【讨论】:
您可以编写一个包装器方法来做到这一点:
public static void DoTrace(string message)
{
DoTrace(message,true);
}
public static void DoTrace(string message, bool includeDate)
{
if (includeDate) {
Trace.WriteLine(DateTime.Now + ": " + message);
} else {
Trace.WriteLine(message);
}
}
【讨论】:
我们使用 log4net TraceAppender,您可以在其中轻松配置布局或过滤。
【讨论】:
您可以编写自己的TextWriterTraceListener,如here 所述。
【讨论】: