Использовать log4net . Шутки в сторону.
Используя такую стандартную и вездесущую библиотеку, вы получаете руководство от людей, которые долго размышляли над этой самой проблемой. Решение состоит в том, что большинство библиотек журналов имеют несколько уровней ведения журнала.
В log4net например я могу сделать
ILog log = LogManager.GetLogger("some logger");
log.Debug("some debugging info");
log.Info("some message meaningful in the domain");
log.Warn("something might be occurring that merits your attention");
log.Error("Everything just went to hell")
Администратор приложения может затем установить различные уровни ведения журнала, которые он заинтересован в просмотре. Можно даже позволить ему изменить эту конфигурацию во время выполнения. На самом деле, с помощью надежной библиотеки журналирования, такой как log4net, вы можете направлять разные уровни журналирования из разных источников в разные приложения. Например, на жестком диске может храниться скользящий файл со всеми сообщениями журнала за последнюю неделю, всеми сведениями, предупреждениями и сообщениями об ошибках, которые не происходят на уровне доступа к данным, помещенными в базу данных, и всеми ошибками, отправленными Вам по электронной почте.
Я думаю, что то, что вы описываете, довольно четко подпадает под уровень журнала "отладки".
Конечно, вы можете реализовать уровни ведения журналов самостоятельно, но если кто-то, использующий вашу библиотеку, заинтересован в просмотре всей отладочной информации, он должен изучить вашу систему, в дополнение к тому, который он использует. Лучше стандартизировать.
Итак, лучшие практики:
- Использовать разные уровни ведения журнала.
- Не катите свою собственную структуру ведения журнала, используйте log4net (что на самом деле является в наши дни и в наши дни довольно стандартным) или, по крайней мере, блок ведения журнала entlib от Microsoft .