【发布时间】:2021-01-18 15:00:23
【问题描述】:
我正在使用 SeriLog(带有 Loki 接收器),并且我还有一个 Exception handler lambda-like in here,它捕获代码执行期间发生的所有异常并使用适当的标签记录它们。
但是,Serilog 本身会自动捕获所有未处理的异常并将它们记录在我面前。结果,异常被记录了两次。
如何禁用 Serilog 的自动日志记录? 这是我当前的 Serilog 配置:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureLogging((logging) =>
{
var log = new LoggerConfiguration()
.MinimumLevel.Debug()
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
logging.AddSerilog(log);
});
【问题讨论】:
-
这不是真正的“Serilog 的自动异常记录功能”...你见过使用
UseSerilog而不是AddSerilog的instructions 吗?我认为您可能最终会使用内置的控制台记录器和 Serilog 的控制台记录器,它们最终会出现双重日志。 -
@KirkLarkin 感谢您抽出宝贵时间回答。我现在看了看,最后发现我的案例的原因是,异常被 1)Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware 和 2)我自己的中间件记录。所以,我认为我需要禁用 ExceptionHandlerMiddleware
标签: c# asp.net-core serilog serilog-exceptions