Serilog LogContext vs Enrich in Owin

本文关键字:in Owin Enrich vs LogContext Serilog | 更新日期: 2023-09-27 18:11:14

我正试图弄清楚什么方法是最好的:

我有一个Owin管道,我想根据请求(URL、IP地址等(用各种信息丰富所有日志

在我看来,在Owin管道中使用Serilog ForContext()有两种可能性:

public override async Task Invoke(IOwinContext context)
{
    using (LogContext.PushProperties(
        RequestUri(context),
        RemoteIp(context)))
        {
            await Next.Invoke(context);
        }
    }

或者在配置Serilog:时设置Enricher

 var configuration = new LoggerConfiguration()
     .Enrich.WithRequestUrl()
     .Enrich.WithRequestClientIp()
     ...

有正确或错误的方法吗?就我个人而言,我喜欢LogContext,因为我为我提供了一种访问Owin Context的简单方法,但另一方面,我的所有请求都会触发所有要评估的enricher。但话说回来,在请求期间只执行一次,而不是针对每个日志记录语句?

这仅仅是基于意见,因此应该是封闭的,还是与另一种方法相比,一种方法有任何优势?

Serilog LogContext vs Enrich in Owin

我不认为Owin提供了使富集工作所需的环境(static(上下文信息。出于这个原因,我个人会先选择LogContext版本。