私は最近、Serilogをいくつかの.NET Standardクラスライブラリに統合しました。これには、MVC 6プロジェクトで使用されるいくつかのクラスライブラリも含まれます。私がしたいのは、HttpContext.TraceIdentifier
でログエントリを充実させることです。HttpContext.TraceIdentifierから読み込むSerilogエンリッチャを作成するにはどうすればいいですか?
public override void OnActionExecuting(ActionExecutingContext context)
{
StringValues correlationIds;
Guid correlationId;
if (!context.HttpContext.Request.Headers.TryGetValue(Constants.CorrelationIdHeaderName, out correlationIds) || correlationIds.Count != 1 || !Guid.TryParse(correlationIds[0], out correlationId))
{
correlationId = _guidFactory.Random();
context.HttpContext.Response.Headers.Add(Constants.CorrelationIdHeaderName, correlationId.ToString("D"));
}
context.HttpContext.TraceIdentifier = correlationId.ToString("D");
base.OnActionExecuting(context);
}
問題相関IDのこの要求の人生のために、私はSerilogに認識させるか、どのようにある本があれば、私は、Correlation-ID
リクエストヘッダの値にHttpContext.TraceIdentifier
を設定アクションフィルタを書きましたか? HttpContext.Current
プロパティがあるかのように表示されないので、うまく機能するエンリッチャーを作成する方法がわかりません。これも可能ですか?
私はこれを試してみます。ありがとう! – NathanAldenSr
'JsonFormatter'を使ってどうすればいいですか?この場合、Serilogはオブジェクトを直列化するため、 'outputTemplate'パラメータはありません。 – NathanAldenSr
@NathanAldenSr私は 'JsonFormatter'についてはわかりませんが、' CompactJsonFormatter'は 'RequestId"のようなJSONオブジェクトのプロパティとして 'RequestId'のようなイベントプロパティを自動的にインクルードします:" 0HL0NKROIGJ8O "' – user764754