NetMediate DataDog Integrations
NetMediate now provides dedicated optional packages for DataDog-focused observability scenarios.
Packages
NetMediate.DataDog.OpenTelemetryNetMediate.DataDog.SerilogNetMediate.DataDog.ILogger
All three runtime packages are multi-targeted for:
net10.0netstandard2.0netstandard2.1
OpenTelemetry package (NetMediate.DataDog.OpenTelemetry)
This package wires NetMediate built-in diagnostics:
ActivitySource:NetMediateMeter:NetMediate
to OTLP exporters typically consumed by the DataDog Agent.
using NetMediate.DataDog.OpenTelemetry;
builder.Services.AddNetMediateDataDogOpenTelemetry(options =>
{
options.ServiceName = "my-service";
options.ServiceVersion = "1.0.0";
options.Environment = "prod";
options.OtlpEndpoint = new Uri("http://localhost:4318");
options.ApiKey = "<DATADOG_API_KEY>"; // optional
}, CancellationToken.None);
Serilog package (NetMediate.DataDog.Serilog)
This package enriches logs with NetMediate fields and can attach the DataDog Serilog sink.
using NetMediate.DataDog.Serilog;
using Serilog;
Log.Logger = new LoggerConfiguration()
.UseNetMediateDataDogSerilog(options =>
{
options.ApiKey = "<DATADOG_API_KEY>";
options.Service = "my-service";
options.Source = "csharp";
options.Tags = ["team:platform", "env:prod"];
}, CancellationToken.None)
.CreateLogger();
ILogger package (NetMediate.DataDog.ILogger)
This package adds DataDog-compatible scope helpers for Microsoft.Extensions.Logging.ILogger.
using NetMediate.DataDog.ILogger;
builder.Services.AddNetMediateDataDogILogger(options =>
{
options.Service = "my-service";
options.Environment = "prod";
options.Version = "1.0.0";
}, CancellationToken.None);
var logger = app.Services.GetRequiredService<ILogger<Program>>();
var ddOptions = app.Services.GetRequiredService<DataDogILoggerOptions>();
using var scope = logger.BeginNetMediateDataDogScope(ddOptions, CancellationToken.None);
logger.LogInformation("Application started");