Я согласен, что вы не должны создавать новый класс для записи непосредственно в журнал событий, но по другой причине. Этот класс уже существует!
Рассмотрите возможность использования встроенных механизмов отладки / трассировки в System.Diagnostics
:
Debug output
Trace output
Это стандартные классы, которые выгружают информацию в коллекцию TraceListener
объектов, из которых уже существует много полезных типов:
DefaultTraceListener
- вывод дампов в стандартную отладку, я думаю, через OutputDebugString()
.
EventLogTraceListener
- Вывод дампов в журнал событий Windows.
Таким образом, ваш механизм вывода из программного вопроса превращается в вопрос о конфигурации. (Да, если вы работаете в прямом управляемом приложении, вы можете заполнить свою коллекцию TraceListener
через свой app.config.) Это означает, что везде вы просто используете соответствующий вызов Trace.Write()
или Debug.Write()
(в зависимости от если вы хотите вывод в сборке релиза), и конфигурация определяет, куда направляется вывод.
Конечно, вы также можете заполнить свою коллекцию TraceListener
программно, это весело и просто.
И таким образом, вам не нужно создавать собственную инфраструктуру для ведения лесозаготовок. Это все встроено! Используйте его на здоровье! : D
Если, с другой стороны, вы настаиваете на том, чтобы кататься самостоятельно (я думаю, что это плохая идея), ваш коллега прав. Это отдельная ответственность и принадлежит к отдельному классу. Я ожидал бы статических методов для вывода, потому что, вероятно, нет концептуальных экземпляров вашего журнала отладки. На самом деле, я ожидал бы, что интерфейс очень похож на System.Diagnostics.Debug
, так что да, просто используйте его вместо этого.
В зависимости от вашего подхода, вы можете столкнуться с тонкой ошибкой, которая есть в документации, но не сразу очевидной без внимательного прочтения. Я нашел ответ на него в другом месте .