Skip to content

DevilDogTG/serilog-enrichers-aspnetcore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Serilog Enrichers for AspNetCore 8

NuGet NuGet

Enrich log with AspNetCore 8 request headers data.

Features

Focus to retrieve common and custom headers from HTTP request. This includes:

  • WithHeaderCorrelationId: Enrich with X-Correlation-ID header or custom key as you want. Able to generate new correlation id if not found.
    • keyName: Header key name for CorrelationId.
    • propertyName: Property name to enrich. Default is CorrelationId.
    • generatedWhenNotExist: Generate new correlation id and added to HTTP header if not fond. this generate by Guid.NewGuid() method. Default is true.
    • generatedFormat: Format of generated correlation id. Default is N. more information see Guid.ToString(String).
  • WithHeaderKey: Enrich with custom header key.
    • keyName: Header key name.
    • propertyName: Proerty name to enrich. If not set, keyName will be used.

Usage

Apply enricher to LoggerConfiguration:

Log.Logger = new LoggerConfiguration()
	.Enrich.WithHeaderCorrelationId(
		keyName: "X-Correlation-ID",
		generatedWhenNotExist: true,
		generatedFormat: "N")
	.Enrich.WithHeaderKey(
		keyName: "CustomKey",
		propertyName: "CustomProperty")
	.CreateLogger();

another way, you can apply in appsettings.json file with Serilog.Settings.Configuration package:

{
  "Serilog": {
	"Using": [ "Serilog.Enrichers.AspNetCore" ],
    "Enrich": [
      {
        "Name": "WithHeaderCorrelationId",
        "Args": {
          "keyName": "X-Correlation-ID",
          "generatedWhenNotExist": true,
          "generatedFormat": "N"
        }
      },
      {
        "Name": "WithHeaderKey",
        "Args": {
          "keyName": "CustomKey",
          "propertyName": "CustomProperty"
        }
      },
      {
        "Name": "WithHeaderKey",
        "Args": {
          "keyName": "SameKeyNProperty"
        }
      }
    ]
  }
}

Then add propertyName to outputTemplate:

{
  "Serilog": {
	"WriteTo": [
	  {
		"Name": "Console",
		"Args": {
		  "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}][{CorrelationId}]{CustomProperty|SameKeyNProperty} {Message:lj} {Properties:j}{NewLine}"
		}
	  }
	]
  }
}

About

Serilog enrichers with correlationid

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages