Serilog LogContext vs Enrich in Owin

时间:2015-09-03 13:42:55

标签: c# owin serilog

我试图弄清楚哪种方法最好:

我有一个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时设置浓缩器:

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

这样做是对还是错?我个人喜欢LogContext,因为我为我提供了一种访问Owin Context的简单方法,但另一方面,我的所有请求都将触发所有要评估的richves。但话说回来,它只在请求期间执行一次,而不是每个日志记录声明?

这是否仅以意见为基础,因此应该被关闭,或者与其他方法相比,这种方法是否有任何优势?

1 个答案:

答案 0 :(得分:3)

我不相信Owin会提供您进行浓缩工作所需的环境(static)上下文信息。出于这个原因,我首先亲自前往LogContext版本。