Добавить метку времени в Trace.WriteLine () - PullRequest
22 голосов
/ 14 мая 2009

В моем приложении на C # .NET возникла проблема с методом Trace.WriteLine (). Я часто использую этот метод и хочу добавлять метку времени каждый раз, когда использую его.

Вместо Trace.WriteLine (DateTime.Now + "Что-то не так!"), Есть ли решение, где DateTime по умолчанию?

Ответы [ 6 ]

83 голосов
/ 15 мая 2009

по коду

Вы можете настроить перечисление флагов 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");
}
18 голосов
/ 02 сентября 2011

Вы можете настроить файл app.config на использование метки времени (относительного и текущего времени) для всех прослушивателей трассировки, используя traceOutputOptions

traceOutputOptions = "DateTime, Timestamp";
2 голосов
/ 14 мая 2009

Просто напишите свой собственный метод "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);}
1 голос
/ 14 мая 2009

Вы можете написать метод-обертку, который это сделал:

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);
    }
}
0 голосов
/ 27 июня 2011

Вы можете написать свой TextWriterTraceListener, как уже упоминалось здесь .

0 голосов
/ 14 мая 2009

Мы используем log4net TraceAppender, где вы можете легко настроить макет или фильтрацию.

...