Serilog
编辑Serilog
编辑我们提供了一个 Serilog 丰富器,它会将跟踪 ID 添加到活动跟踪期间创建的每一行日志中。
该丰富器位于 Elastic.Apm.SerilogEnricher NuGet 包中。
您可以在配置 Serilog 日志记录器时启用它。
var logger = new LoggerConfiguration() .Enrich.WithElasticApmCorrelationInfo() .WriteTo.Console(outputTemplate: "[{ElasticApmTraceId} {ElasticApmTransactionId} {Message:lj} {NewLine}{Exception}") .CreateLogger();
在上面的代码片段中,.Enrich.WithElasticApmCorrelationInfo()
启用了丰富器,它将为事务期间创建的日志行设置两个属性。
- ElasticApmTransactionId
- ElasticApmTraceId
如您所见,在控制台接收器的 outputTemplate
中打印了这两个属性。当然,它们可以与任何其他接收器一起使用。
如果您想将日志直接发送到 Elasticsearch,可以使用 Serilog.Sinks.ElasticSearch 包。此外,您可以将 Elastic.CommonSchema.Serilog 包中的 EcsTextFormatter
传递给 Elasticsearch 接收器,它会根据 Elastic Common Schema (ECS) 格式化所有日志,并确保跟踪 ID 位于正确的字段中。
添加上述两个包后,您可以像这样配置日志记录器:
Log.Logger = new LoggerConfiguration() .Enrich.WithElasticApmCorrelationInfo() .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("https://127.0.0.1:9200")) { CustomFormatter = new EcsTextFormatter() }) .CreateLogger();
通过此设置,应用程序将自动将所有日志发送到 Elasticsearch,并且您将能够在跟踪和日志之间跳转。