将时间戳添加到Trace.WriteLine()

时间:2009-05-14 13:41:04

标签: c# debugging timestamp trace

在我的C#.NET应用程序中,我遇到了Trace.WriteLine()方法的问题。我使用这种方法很多,并且每次使用时都想添加一个TimeStamp。

而不是Trace.WriteLine(DateTime.Now +“有问题!”),是否存在DateTime默认的解决方案?

6 个答案:

答案 0 :(得分:83)

通过代码

您可以配置TraceOutputOptions标志枚举。

var listener = new ConsoleTraceListener() { TraceOutputOptions = TraceOptions.Timestamp | TraceOptions.Callstack };
Trace.Listeners.Add(listener);

Trace.TraceInformation("hello world");

这对Write和WriteLine不起作用,您使用了TraceXXX方法。

通过app.config

这也可以在你的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");
}

答案 1 :(得分:18)

您可以使用app.config

traceOutputOptions文件设置为使用所有跟踪侦听器的时间戳(相对和当前时间)
traceOutputOptions = "DateTime, Timestamp";

答案 2 :(得分:1)

您可以编写一个包装器方法来完成它:

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);
    }
}

答案 3 :(得分:1)

只需编写自己的“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);}

答案 4 :(得分:0)

我们使用log4net TraceAppender,您可以轻松配置布局或过滤。

答案 5 :(得分:0)

您可以自己编写TextWriterTraceListener,如上所述here