1

BeginTimedOperation()在 Web API 中使用 SerilogMetrics,能够使用HttpRequestNumberorHttpRequestId属性(来自各自的 Serilog.Extra.Web 丰富器)作为标识符真的很棒,这使得关联与时间相关的日志条目变得非常容易与其他人一起提出请求。

就像是:

using (logger.BeginTimedOperation("doing some work", HttpRequestNumberEnricher.CurrentRequestNumber))
{ ... }

没有寻找神奇HttpContext.Current的(即非公开的)命名属性,这是可以实现的吗?谢谢!

4

1 回答 1

0

如果您在 Web 请求期间开始定时操作,则该操作的事件将已被标记为HttpRequestId.

当您登录到像 Seq 这样的结构化日志服务器时,您会看到它,但如果您将其写入文本文件或跟踪,则默认情况下该属性不会包含在输出消息中。要在其中显示它,请使用以下内容:

.WriteTo.File(...,
    outputTemplate: "{Timestamp} [{Level}] ({HttpRequestId}) {Message} ...")

日志记录方法使用默认模板,您可以从中汲取灵感,尽管没有明确的参考,但在wiki上散布了一些信息。

于 2015-04-03T21:21:21.750 回答