Изменение избыточности сообщений журналов с помощью фильтрации¶
ASP.NET Core включает возможность фильтрации сообщений журнала до того, как они будут написаны, основываясь на сочетании трёх вещей:
- уровень сообщения журнала;
- категория средства ведения журнала;
- поставщик журналирования.
Можно создать правила, используя эти свойства, и для каждого конкретного журнала будет применяться наиболее конкретное правило, чтобы определить, следует ли записывать сообщение журнала. Например:
- минимальный уровень сообщения по умолчнию —
Information— если другие правила не применяются, записываться будут только сообщения с уровнемInformationили выше; - для категорий, начинающихся со слова Microsoft, минимальный уровень —
Warning; - для поставщика консоли минимальный уровень —
Error.
Обычно набор правил журналирования определяется в многоуровневой конфигурации, описанной в главе 11. Для этого нужно вызвать метод AddConfiguration при настройке журналирования (или использовать метод CreateDefaultBuilder()). Вот как добавить правила конфигурации при настройке собственного HostBuilder:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
new HostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration(config => config.AddJsonFile("appsettings.json"))
.ConfigureLogging((ctx, builder) =>
{
builder.AddConfiguration(ctx.Configuration.GetSection("Logging"));
builder.AddConsole();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
}
Здесь мы загрузили всю конфигурацию из файла appsettings.json. Конфигурация журналирования взята из секции
"Logging" объекта IConfiguration, доступного при вызове метода ConfigureLogging().
Совет
Как было показано ранее, можно загружать параметры конфигурации из разных источников в зависимости от IHostingEnvironment. Распространённой практикой является включение параметров журналирования для промышленного окружения в appsettings.json, а переопределений для локального окружения разработки — в файл appsettings.Development.json.
Определим описанные выше правила в конфигурационном файле:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning"
},
"Console": {
"LogLevel": {
"Default": "Error"
}
}
}
}
Внимание
Правила фильтрации сообщений журналов не объединяются; выбирается одно правило. Включение правил для конкретного поставщика переопределит глобальные правила для конкретных категорий.
Дата создания : 20 октября 2022 г.