如何解决迁移到steeltoe 3.0后,steeltoe serilog动态记录器无法正常工作
我在.net core 3.1应用程序中使用了steeltoe 2.4.3。最近,我将Steeltoe软件包更新为v3.0.1,看来日志不是以serilog格式出现的。我无法找出问题所在。我的应用程序设置中确实有serilog配置,如下所示。
{
"management": {
"endpoints": {
"path": "/myexample/cloudfoundryapplication","cloudfoundry": {
"validateCertificates": false
},"actuator": {
"exposure": {
"include": [ "*" ],"exclude": [ "env","refresh" ]
}
}
}
},"Serilog": {
"MinimumLevel": {
"Default": "Information","Override": {
"Microsoft": "Information","Steeltoe": "Information"
}
},"WriteTo": [
{
"Name": "Console","Args": {
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter,Serilog.Formatting.Compact"
}
},{
"Name": "Trace",Serilog.Formatting.Compact"
}
}
],"Enrich": [ "FromLogContext" ]
},"AllowedHosts": "*"
}
Program.cs如下所示
public static class Program
{
public static void Main(string[] args)
{
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.AddCloudFoundryConfiguration()
.ConfigureLogging((builderContext,loggingBuilder) =>
{
// Add Serilog Dynamic Logger
loggingBuilder.AddDynamicSerilog();
})
.AddCloudFoundryActuators()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
我的.csproj在下面看起来很像。
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<None Update="wwwroot\**\*;*.yml">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Serilog.Sinks.Trace" Version="2.1.0" />
<PackageReference Include="Serilog.Formatting.Compact" Version="1.1.0" />
<PackageReference Include="Steeltoe.Extensions.Logging.DynamicSerilogCore" Version="3.0.1" />
<PackageReference Include="Steeltoe.Management.CloudFoundryCore" Version="3.0.1" />
<PackageReference Include="Steeltoe.Extensions.Configuration.CloudFoundryCore" Version="3.0.1" />
</ItemGroup>
</Project>
解决方法
AddDynamicSerilog
(当前)未添加控制台接收器,请尝试更新代码以使其看起来像这样:
AddDynamicSerilog(new LoggerConfiguration().WriteTo.Console())
This PR将导致如果未提供任何配置,则自动添加控制台接收器,它可能会在Steeltoe 3.0.2中提供(尚无ETA)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。