Найти тему

MS Enterprise Library 5: custom console tracelistener

Случилось так, что понадобилось мне вытащить логирование в консоль, причем с тем форматированием, с которым логи в файлы пишутся. А тут проблема - логирование в этом проекте до сих пор в MS Enterprise Library, да еще и 5 версии. Мало того, что сама библиотека давно померла, так еще и ее структура достаточно сложная, сразу и не разберешься, чего к чему.

Тем не менее, оказалось все не так страшно. Вот как выглядит нужный класс tracelistener:

[ConfigurationElementType(typeof(CustomTraceListenerData))]
// ReSharper disable once UnusedMember.Global public class CustomConsoleTraceListener: CustomTraceListener
{
#region Переопределения для TraceListener
public override void Write(string message)
{
Console.Write(message);
}

public override void WriteLine(string message)
{
Console.WriteLine(message);
}

public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
{
if (data is LogEntry entry && Formatter != null)
{
WriteLine(Formatter.Format(entry));
}
else {
WriteLine(data.ToString());
}
}

#endregion
}

Может, я чего-то здесь и упустил, но работает ровно так, как мне надо. Добавляем этот элемент в файл конфигурации приложения штатными средствами, - или редактором конфигураций, или руками в xml, - и настраиваем связи. Лог получается правильно отформатированный, ошибок пока не заметил.