ASP.NET Web API 管道中的 Serilog 自定义丰富器

Serilog Custom Enrichers in ASP.NET Web API Pipeline

Serilog Custom Enricher 何时在 Web API 管道中执行?

我注意到 public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory) 方法被调用一次或两次,具体取决于我是否有日志事件(即 Log.Debug()、Log.Warning() 等)。如果我有一个日志事件,它会被调用两次——在 Http 请求和 HTTP 响应处理中。如果我没有日志事件,它只会被调用一次,即在 HTTP 响应处理期间。

Serilog Enrichers 运行 每次调用将日志事件写入日志时(只要启用事件日志类型)。

例如

Log.Information("hey1");
Log.Warning("hey2");
Log.Debug("hey3");

将向日志写入 3 个日志事件,这将导致配置的所有丰富器被调用 3 次,每个事件调用一次,以丰富每个事件。

当然,如果您将 Serilog 连接到 ASP .NET 请求管道,ASP .NET 日志消息将被转发到 Serilog,这也会导致 enrichers调用每个偶数...