Динамический регистратор Steeltoe Serilog не работает в приложении.net core 2.2
Я пытался использовать новый Steeltoe Serilog Dynamic Logger https://steeltoe.io/docs/steeltoe-logging/ в моем приложении.net core 2.2. Я использовал 2.3.0 версию пакета Steeltoe.Extensions.Logging.SerilogDynamicLogger. В моем program.cs у меня есть код ниже
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.AddCloudFoundry();
configApp.AddConfigServer();
})
.UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.WriteTo.Trace())
.ConfigureLogging((builderContext, loggingBuilder) =>
{
loggingBuilder.ClearProviders();
loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Logging"));
// Add Serilog Dynamic Logger
loggingBuilder.AddSerilogDynamicConsole();
});
В приведенном выше блоке, прежде всего, я не знаю, почему
loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Вход"));
требуется, потому что он предназначен для настройки Microsoft ILogger, а Serilog не рекомендует такой параметр. В любом случае, у меня есть оба в моем appsettings.json
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning",
"System": "Warning",
"Microsoft": "Warning"
}
},
"Serilog": {
"MinimumLevel": {
"Default": "Information"
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
},
{
"Name": "Trace",
"Args": {
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
}
],
"Enrich": [ "FromLogContext" ]
},
После развертывания на PCF, после нажатия кнопки "Настроить уровни ведения журнала", я мог видеть только 1/1 в разделе "Фильтры ведения журнала", также при изменении параметра "Регистрация по умолчанию" уровни ведения журнала не контролируются. Я использую PCF 2.4. Любые мысли о том, почему это не работает, будут полезны.
1 ответ
Я протестировал образец по адресу https://github.com/SteeltoeOSS/Samples/tree/master/Management/src/AspDotNetCore/CloudFoundry с 2.3.0 (в настоящее время он равен 2.3.0-rc2, что идентично). Это работает для меня с CF 2.6. Можете ли вы попробовать развернуть образец в вашей среде и убедиться, что конечная точка ведения журнала выглядит следующим образом:
в твоем клике беги cf logs <sample app name> | grep Test
, Теперь настройте уровень регистрации Cloudfoundry.Controllers, посетите домашнюю страницу. Вы должны увидеть разницу в многословии журналов. Надеюсь, с этим вы можете сравнить и увидеть, где приложение / конфигурация отличается.
➜ CloudFoundry git:(2.x) ✗ cf logs actuator | grep Test
2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT Test Critical message
2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT Test Error message
2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT Test Warning message
2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT Test Informational message
2019-08-28T12:51:17.67-0400 [APP/PROC/WEB/0] OUT Test Debug message
----- after adjusting ------
2019-08-28T12:52:16.29-0400 [APP/PROC/WEB/0] OUT Test Critical message