首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Serilog(或任何结构化日志库)的Steeltoe动态日志记录配置

使用Serilog(或任何结构化日志库)的Steeltoe动态日志记录配置
EN

Stack Overflow用户
提问于 2019-02-25 15:54:39
回答 1查看 1.1K关注 0票数 1

这可能是如何设置与第三方伐木者作为Serilog?的重复。我想利用配置(将帮助我在不重新部署的情况下动态调整日志级别),并希望使我的日志语句更加结构化。所以我决定去看看塞里罗格。这是我的密码

代码语言:javascript
复制
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(听说它也支持结构化日志记录)中有可能吗?或任何其他将结构化日志记录和动态日志记录配置相结合的想法都是最受欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2019-04-05 21:19:31

Steeltoe现在已经通过Steeltoe.Extensions.Logging.SerilogDynamicLogger对Serilog提供了初步的支持,可以在dev支路MyGet进给中获得。源代码和单元测试都在这个储存库中,欢迎您的反馈!

使用新的NuGet包,您应该能够做到这一点

代码语言:javascript
复制
new WebHostBuilder()
  .ConfigureLogging((builderContext, loggingBuilder) =>
  {
    loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Logging"));

    // Add Steeltoe Dynamic Serilog provider
    loggingBuilder.AddSerilogDynamicConsole();
  })

然后在您的路上,就像您将对预先存在的动态记录器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54870052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档