Как выборочно вести журнал с помощью Microsoft Extension Logging?

Я пытаюсь полностью реализовать ведение журнала расширений Microsoft (MEL) в новой службе веб-API .Net Core.

У вас нет проблем с добавлением/настройкой поставщиков, но вы пытаетесь понять, как реализовать дополнительную детализацию в ведении журнала.

В следующем примере создается конфигурация SeriLog и добавляется консольный регистратор в конфигурацию ведения журнала:

          Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Debug()
        .WriteTo.File("logs/somelogs.txt", rollingInterval: RollingInterval.Day)
        .CreateLogger();

    // Add services to the container.
    builder.Logging.ClearProviders();

    //logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
    builder.Logging.AddSerilog(dispose: true);
    builder.Logging.AddConsole();

Теперь каждый экземпляр регистратора теперь будет регистрироваться в этом.

Я надеялся иметь регистраторы по умолчанию, но иметь возможность выбирать пользовательские регистраторы для конкретных ситуаций. Например, используя MEL LoggerFactory по умолчанию для создания экземпляра на основе зарегистрированного провайдера:

          var loggerFactory = new LoggerFactory();
    var newLogger = loggerFactory.CreateLogger("specialLogger");

Приведенный выше код просто создает регистратор и устанавливает категорию на основе имени.

В предыдущих проектах я обычно реализовывал простой абстрактный уровень интерфейса ведения журнала (находящийся над NLog) и имел возможность выбрать конкретную конфигурацию.

Есть ли какие-либо рекомендации о том, как реализовать это в MEL, возможно, расширив LoggerFactory?

В качестве альтернативы можно создать простую службу ведения журнала, которая будет набором провайдеров, где можно будет создавать определенные экземпляры регистраторов на основе имени:

       builder.Services.AddSingleton<ISpecialLoggerService>(loggerService);

ТИА

Ссылки:https://blog.stephencleary.com/2018/06/microsoft-extensions-logging-part-2-types.htmlhttps://blog.rsuter.com/logging-with-ilogger-recommendations-and-best-practices/https://michaelscodingspot.com/logging-in-dotnet/

0 ответов

Другие вопросы по тегам