Как сказал sellotape, уровень лога, установленный в .NET Core, является минимальным уровнем.
Когда вы установите Debug
, он будет регистрировать Critical, Error, Warning, Information, Debug
уровни.Это будет не log Trace
(высшая степень детализации).
Если вы не хотите Information
, вы установите его на Warning
, тогда вы получите только Critical, Error, Warning
logged.
Однако, если вы хотите Critical, Error, Warning, Debug
без информации, вы не можете сделать это напрямую с помощью appsettings.json
.
public static class Program
{
public static void Main(string[] args) => CreateWebHostBuilder(args).Build().Run();
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((hostingContext, config) => { ... })
.ConfigureLogging((webhostContext, builder) => {
builder.AddConfiguration(webhostContext.Configuration.GetSection("Logging"))
.AddFilter<ConsoleLoggerProvider>(logLevel => logLevel!=LogLevel.Information)
.AddConsole()
.AddDebug();
})
.UseIISIntegration()
.UseStartup<Startup>()
.UseApplicationInsights();
}
// by strong typedProvider
.AddFilter<ConsoleLoggerProvider>(logLevel => logLevel!=LogLevel.Information)
// or by name
.AddFilter("Console", logLevel => logLevel != LogLevel.Information)
// or generic/global
.AddFilter(logLevel => logLevel != LogLevel.Information)
добавляет фильтр ведения журнала с одним из трех предикатов (Func<string, string, LogLevel, bool>
, Func<string, LogLevel, bool>
, Func<LogLevel, bool>
), как видно из Базовая документация ASP.NET :
Функции фильтра
Функция фильтра вызывается для всех провайдеров и категорий, которым не назначены правила по конфигурации или коду.Код в функции имеет доступ к типу провайдера, категории и уровню журнала.Например:
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(logBuilder =>
{
logBuilder.AddFilter((provider, category, logLevel) =>
{
if (provider == "Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider" &&
category == "TodoApiSample.Controllers.TodoController")
{
return false;
}
return true;
});
})
.Build();