这可能是如何设置与第三方伐木者作为Serilog?的重复。我想利用配置(将帮助我在不重新部署的情况下动态调整日志级别),并希望使我的日志语句更加结构化。所以我决定去看看塞里罗格。这是我的密码
public class Program
{
/// <summary>
/// Application entry point.
/// </summary>
/// <param name="args">arguments.</param>
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
/// <summary>
///
/// </summary>
/// <param name="args"></param>
/// <returns></returns>
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostContext, config) =>
{
config.AddCloudFoundry();
})
.ConfigureLogging((context, builder) =>
{
// We need to clear providers which are added by CreateDefaultBuilder().
// Please refer https://github.com/aspnet/Logging/issues/648. Otherwise log entries will be duplicated
// since AddDynamicConsole again add console logger
builder.ClearProviders();
if (context.HostingEnvironment.IsDevelopment())
{
builder.AddDebug();
}
builder.AddDynamicConsole();
})
.UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext()
.WriteTo.Console(outputTemplate:
"[{Level:u3}] [{Properties}] {Message}{NewLine}{Exception}")
.WriteTo.Trace())
.Build();
} 但这并不像预期的那样有效。在PCF应用程序管理器中,除了“默认”之外,我无法看到任何日志服务提供商。如果我取消评论
UseSerilog()
他们也回来了。顺便说一句,我不想将我自己限制在Serilog上,这在NLog(听说它也支持结构化日志记录)中有可能吗?或任何其他将结构化日志记录和动态日志记录配置相结合的想法都是最受欢迎的。
发布于 2019-04-05 21:19:31
Steeltoe现在已经通过Steeltoe.Extensions.Logging.SerilogDynamicLogger对Serilog提供了初步的支持,可以在dev支路MyGet进给中获得。源代码和单元测试都在这个储存库中,欢迎您的反馈!
使用新的NuGet包,您应该能够做到这一点
new WebHostBuilder()
.ConfigureLogging((builderContext, loggingBuilder) =>
{
loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Logging"));
// Add Steeltoe Dynamic Serilog provider
loggingBuilder.AddSerilogDynamicConsole();
})然后在您的路上,就像您将对预先存在的动态记录器。
https://stackoverflow.com/questions/54870052
复制相似问题