Как классифицировать журналы Serilog по пользовательским идентификаторам и настроить для них определенные уровни веденияC#

Место общения программистов C#
Anonymous
Как классифицировать журналы Serilog по пользовательским идентификаторам и настроить для них определенные уровни ведения

Сообщение Anonymous »

Я знаю, что можно использовать MinimalLevel.Override, который затем определяет конкретный уровень ведения журнала для каждого пространства имен или типа, но что, если я хочу зарегистрировать его по что-то более конкретное для моего контекста или требований?
Например, в моем приложении я хочу иметь определенную группу журналирования для всего, что связано с сущностью «Пользователи». Однако это не привязано к конкретному пространству имен или классу, это может быть код в контроллерах, репозитории или любой пользовательской службе. При отладке чего-либо, связанного с пользователями, я хотел бы включить для этого подробное ведение журнала, но не увеличивать его для каких-либо других журналов, служб или контроллеров, даже если они разделяют пространство имен с пользователями.
Опять же, «Пользователи» - это просто пример - это может быть связано с определенным типом SQL-запросов, которые я делаю, всякий раз, когда используется какой-либо сервис, только когда запускается определенное условие глубоко внутри некоторого кода и т. д. - возможно, я хочу, чтобы все SQL-запросы регистрировались с ошибкой только за исключением некоторых, которые должны быть подробными.
Сначала я попробовал сделать это с помощью переключателей

Код: Выделить всё

Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Configuration)
.MinimumLevel.Override("Case1", SerilogSwitches.Case1)
.MinimumLevel.Override("Case2", SerilogSwitches.Case2)
.CreateLogger();
Проблема в том, что «Case1» и «Case2» должны соответствовать определенному пространству имен или типу, который мне не подходит.
Я также рассмотрел возможность создания конкретного контекста журнала для каждого из этих случаев, используя Log.ForContext

Код: Выделить всё

var logger1 = Log.ForContext("Context", "Case1");
var logger2 = Log.ForContext("Context", "Case2");
Хотя это позволило бы мне выбрать, какой регистратор использовать в любой момент, а затем позже было бы легче находить и фильтровать журналы для этого конкретного контекста, все они по-прежнему регистрируются на одном уровне - я не знаю. Не думаю, что смогу изменить уровень ведения журнала для определенного контекста, например, иметь Case1 для информации, а Case2 для ошибки.
Любая помощь приветствуется

Подробнее здесь: https://stackoverflow.com/questions/785 ... fic-loggin

Вернуться в «C#»