【问题标题】:Serilog writes the logs twiceSerilog 两次写入日志
【发布时间】:2019-01-29 02:27:21
【问题描述】:

我将 Serilog 与 Elasticsearch sink 一起使用,配置如下:

Log.Logger = new LoggerConfiguration()
                    .MinimumLevel.Verbose()
                    .MinimumLevel.Override("Microsoft", LogEventLevel.Verbose)
                    .Enrich.FromLogContext()
                    .Enrich.WithExceptionDetails()
                    .Enrich.WithProperty("Application", "abc")
                    .Enrich.WithProperty("Environment", env.EnvironmentName)
                    .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(Configuration["LoggingEndpoint"]))
                    {
                        AutoRegisterTemplate = true,
                        CustomFormatter = new ExceptionAsObjectJsonFormatter(renderMessage: true) // Better formatting for exceptions
                    })

// 及以后:

services.AddLogging(loggingBuilder =>
            loggingBuilder.AddSerilog());

但我可以在 Kibana 上看到每个日志两次,它们的时间戳相差几毫秒。我尝试了here 提供的解决方案,以防万一他们可能会有所帮助,但没有运气。

【问题讨论】:

  • 你是怎么解决这个问题的?
  • 可能有点晚了。但是您是否还在 appsettings.json 中配置了 serilog 日志记录?如果是这样,它将从代码和日志记录中记录。我遇到了一些问题!
  • 乔迪的回答应该是答案
  • @JordyvanEijk 你找到解决办法了吗?我使用 SerilogRequestLogging,如果我的控制器中有异常,它会被记录两次。
  • @jmazur 你还有这个问题吗?也许你在控制器中记录你的异常并重新抛出它,它会被你的应用程序本身捕获?

标签: asp.net-core-2.0 serilog kibana-6


【解决方案1】:

这可能是因为您在 appsettings.json 和代码中配置 Serilog。这会将所有内容记录两次。

【讨论】:

  • 谢谢!我的代码就是这种情况。我正在使用 WriteTo(new JsonFormatter()) 并在它之后使用 ReadFrom.Configuration。我删除了后者,现在它可以正确记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 2014-12-21
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多