APM Serilog Enricheredit

This enricher adds the transaction id and trace id to every Serilog log message that is created during a transaction.

Installationedit

Add a reference to the Elastic.Apm.SerilogEnricher package:

<PackageReference Include="Elastic.Apm.SerilogEnricher" Version="8.6.0" />

Usageedit

var logger = new LoggerConfiguration()
   .Enrich.WithElasticApmCorrelationInfo()
   .WriteTo.Console(outputTemplate: "[{ElasticApmTraceId} {ElasticApmTransactionId} {ElasticApmSpanId} {Message:lj} {NewLine}{Exception}")
   .CreateLogger();

Propertiesedit

In the code snippet above Enrich.WithElasticApmCorrelationInfo() enables the enricher from this project, which will set 3 properties for log lines that are created during a transaction:

  • ElasticApmTraceId
  • ElasticApmTransactionId
  • ElasticApmSpanId

These two properties are printed to the Console using the outputTemplate parameter, of course they can be used with any sink, you could consider using a filesystem sink and Elastic Filebeat for durable and reliable ingestion. This enricher is also compatible with the Elastic.CommonSchema.Serilog package.

Prerequisiteedit

The prerequisite for this to work is a configured Elastic APM Agent. If the agent is not configured the enricher won’t add anything to the logs.