Skip to content

EnrichDiagnosticContext not adding properties to output #148

Closed
@purplepangolin

Description

@purplepangolin

First, let me say thanks for providing this excellent set of projects. There are a lot of great features and impressive documentation of the capabilites provided. The following issue may be due to me misunderstanding something, but I think it is a bug.

I am using Serilog.AspNetCore 3.2.0-dev-00133 as I wanted to take advantage of EnrichDiagnosticContext which has recently been added, in order to easily log request headers when using the RequestLoggingMiddleware.

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
      app.UseSerilogRequestLogging(options =>
      {
        options.MessageTemplate = MessageTemplate;
        options.EnrichDiagnosticContext = (diagnosticContext, httpContext) =>
        {
          diagnosticContext.Set("Headers", httpContext.Request.Headers);
        };
      });
      
      app.UseMvc();
    }

However, the headers do not appear in the logged event. Looking at the code for RequestLoggingMiddleware.LogCompletion Lines 81-85 are:

            if (!collector.TryComplete(out var collectedProperties))
                collectedProperties = NoProperties;

            // Enrich diagnostic context
            _enrichDiagnosticContext?.Invoke(_diagnosticContext, httpContext);

shouldn't the call to enrich appear before collector.TryComplete as per this comment?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions