저는 최근 Serilog를 여러 .NET Standard 클래스 라이브러리에 통합했습니다. 여기에는 MVC 6 프로젝트에서 사용되는 일부 클래스 라이브러리가 포함됩니다. 내가하고 싶은 것은 HttpContext.TraceIdentifier
으로 로그 엔트리를 풍부하게하고 싶다. 어떻게 내가 Serilog 인식하게 할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의이 요청의 삶을 위해 : 나는 존재하는 경우 Correlation-ID
요청 헤더 값으로 HttpContext.TraceIdentifier
을 설정하는 액션 필터를 썼다? HttpContext.Current
속성이있는 것처럼 보이지 않으므로 작동 할 수있는 풍성한 작성 방법을 잘 모르겠습니다. 이것은 가능한가?
나는 이것을 시도 할 것이다. 감사! – NathanAldenSr
'JsonFormatter'를 사용하면 어떻게 될까요? 이 경우 Serilog는 객체를 직렬화하기 때문에'outputTemplate' 매개 변수가 없습니다. – NathanAldenSr
@NathanAldenSr 'JsonFormatter'에 대해서는 모르겠지만'CompactImplatter'는'RequestId "와 같은 JSON 객체 속성으로'RequestId'와 같은 모든 이벤트 속성을 자동으로 포함합니다 :"0HL0NKROIGJ8O "' – user764754