Лучшие практики ведения журнала

Я должен присоединиться к asp-net хору, рекомендующему log4net, в log моем случае исходя из гибкости tracing платформы (настольный .Net .net-framework / Compact Framework, 32/64-разрядная logging версия).

Однако использование logging API частной марки - это серьезный антишаблон. log4net.ILogger уже aspdotnet является аналогом .Net оболочки asp.net Commons Logging API, поэтому связь уже минимизирована tracing для вас, и, поскольку это asp-net также библиотека Apache, это log обычно даже не проблема, потому tracing что вы не отказываетесь ни logger от чего control: при необходимости log создайте вилку.

Большинство dotnet домашних библиотек-оболочек, которые logger я видел, также допускают aspdotnet одну или несколько ошибок:

  1. Использование глобального одноэлементного регистратора (или, что эквивалентно, статической точки входа), которое теряет высокое разрешение рекомендуемого logger-per-class pattern без какого-либо другого увеличения селективности.
  2. Отсутствие необязательного аргумента Exception, приводящее к множеству проблем:
    • Это еще больше усложняет поддержку политики ведения журнала исключений, поэтому с исключениями ничего не происходит согласованно.
    • Даже при последовательной политике при форматировании исключения в строку преждевременно теряются данные. Я написал собственный декоратор ILayout, который выполняет подробную детализацию исключения для определения цепочки событий.
  3. Отсутствие доступа к свойствам IsLevelEnabled, что исключает возможность пропуска кода форматирования, когда области или уровни ведения журнала отключены.

.net

asp.net

logging

trace

2022-04-12T18:49:09+00:00