pub type FieldMappingFn = dyn for<'a> Fn(&'a SpanData, &'a ModelConfig) -> &'a str + Send + Sync;👎Deprecated since 0.21.0:
The opentelemetry-datadog crate is deprecated and will be removed from opentelemetry-rust-contrib. Use https://github.com/DataDog/dd-trace-rs instead. See https://github.com/open-telemetry/opentelemetry-rust-contrib/issues/609 for context.
Expand description
Custom mapping between opentelemetry spans and datadog spans.
User can provide custom function to change the mapping. It currently supports customizing the following fields in Datadog span protocol.
| field name | default value |
|---|---|
| service name | service name configuration from ModelConfig |
| name | opentelemetry instrumentation library name |
| resource | opentelemetry name |
The function takes a reference to SpanData and a reference to ModelConfig as parameters.
It should return a &str which will be used as the value for the field.
If no custom mapping is provided. Default mapping detailed above will be used.
For example,
use opentelemetry::global;
use opentelemetry_datadog::{ApiVersion, new_pipeline};
fn main() -> Result<(), opentelemetry_datadog::Error> {
let provider = new_pipeline()
.with_service_name("my_app")
.with_api_version(ApiVersion::Version05)
// the custom mapping below will change the all spans' name to datadog spans
.with_name_mapping(|span, model_config|{"datadog spans"})
.with_agent_endpoint("http://localhost:8126")
.install_batch()?;
global::set_tracer_provider(provider.clone());
let tracer = global::tracer("opentelemetry-datadog-demo");
Ok(())
}