我试图在我的 .net core 2.2 应用程序中使用新的 Steeltoe Serilog 动态记录器https://steeltoe.io/docs/steeltoe-logging/#2-0-serilog-dynamic-logger 。我使用了 Steeltoe.Extensions.Logging.SerilogDynamicLogger 包的 2.3.0 版本。在我的 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("Logging"));
是必需的,因为它用于配置 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。关于为什么它不起作用的任何想法都会有所帮助。