Как выборочно вести журнал с помощью 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/