Ответ 1
Настройка способа записи немного изменилась... Рекомендуемый способ (и он довольно хорошо документирован в этой проблеме/объявлении GitHub для этого нужно настроить регистраторы по методу AddLogging
, например
services.AddLogging(builder =>
{
builder.AddConfiguration(Configuration.GetSection("Logging"))
.AddConsole()
.AddDebug();
});
И используйте appsettings.json
как
{
"ApplicationInsights": {
"InstrumentationKey": ""
},
"Logging": {
"IncludeScopes": false,
"Console": {
"LogLevel": {
"Default": "Warning",
"System": "Information",
"Microsoft": "Information"
}
}
}
}
Обратите внимание, что структура appsettings.json изменилась с того, что раньше было в .NET Core 1.x, и что запись Logging
в appsettings.json
теперь имеет в ней имена поставщиков журналов, что позволяет вам настраивать уровни ведения журнала для каждого поставщика протоколирования.
Ранее запись в appsettings.json
применима только к регистратору консоли.
В качестве альтернативы, теперь журнал может быть перемещен внутри WebHostBuilder
.
public static void Main()
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddJsonFile("hosting.json", optional: false)
.AddEnvironmentVariables();
})
.ConfigureLogging((webhostContext, builder) => {
builder.AddConfiguration(webhostContext.Configuration.GetSection("Logging"))
.AddConsole()
.AddDebug();
})
.UseIISIntegration()
.UseStartup<Startup>()
.UseApplicationInsights()
.Build();
host.Run();
}
Update
Если вы не хотите использовать appsettings.json
, можно также зарегистрировать фильтры в коде.
services.AddLogging(builder =>
{
builder.AddConfiguration(Configuration.GetSection("Logging"))
// filter for all providers
.AddFilter("System", LogLevel.Debug)
// Only for Debug logger, using the provider type or it alias
.AddFilter("Debug", "System", LogLevel.Information)
// Only for Console logger by provider type
.AddFilter<DebugLoggerProvider>("System", LogLevel.Error)
.AddConsole()
.AddDebug();
});