C# Serilog LogContext与Owin中的Enrich

C# Serilog LogContext与Owin中的Enrich,c#,owin,serilog,C#,Owin,Serilog,我试图找出哪种方法是最好的: 我有一个Owin管道,我想根据请求(URL、IP地址等)用各种信息丰富所有日志 在我看来,在Owin管道中使用SerilogForContext()有两种可能性: 公共重写异步任务调用(IOwinContext上下文) { 使用(LogContext.PushProperties)( 请求URI(上下文), RemoteIp(上下文))) { 等待下一步。调用(上下文); } } 或在配置Serilog时设置Enricher: var配置=新日志配置() .Enr

我试图找出哪种方法是最好的:

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

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

公共重写异步任务调用(IOwinContext上下文)
{
使用(LogContext.PushProperties)(
请求URI(上下文),
RemoteIp(上下文)))
{
等待下一步。调用(上下文);
}
}
或在配置Serilog时设置Enricher:

var配置=新日志配置()
.Enrich.WithRequestUrl()
.Enrich.WithRequestClientIp()
...
有没有正确或错误的方法?就个人而言,我喜欢LogContext,因为我提供了一种访问Owin上下文的简单方法,但另一方面,我的所有请求都会触发所有要评估的Enricher。但是,在一个请求期间,它只执行一次,而不是针对每个日志记录语句


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

我不相信Owin提供了使充实工作正常所需的环境(
静态
)上下文信息。出于这个原因,我个人会首先选择
LogContext
版本。

这是一个很好的观点!当您在IIS中运行它时,您仍然可以(AFAIK)通过HttpContext访问owin上下文。但我宁愿不要。我最感兴趣的是使用LogContext是否有任何缺点?