Добавить отметку времени в Trace.WriteLine()
В моем приложении С#.NET у меня проблема с методом Trace.WriteLine(). Я использую этот метод много и хочу добавлять TimeStamp каждый раз, когда я его использую.
Вместо Trace.WriteLine(DateTime.Now + "Что-то не так!" ), есть ли решение, в котором DateTime по умолчанию?
Ответы
Ответ 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);}
Ответ 2
Через код
Вы можете настроить перечисление флажков 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");
}
Ответ 3
Вы можете установить для файла app.config
временную метку (относительное и текущее время) для всех прослушивателей трассировки с помощью traceOutputOptions
traceOutputOptions = "DateTime, Timestamp";
Ответ 4
Вы можете написать способ обертки, который сделал это:
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);
}
}
Ответ 5
Мы используем log4net TraceAppender, где вы можете легко конфигурировать макет или фильтрацию.
Ответ 6
Вы можете написать свой собственный TextWriterTraceListener
, как указано здесь.