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