Struct TelemetryConfigBuilder

Source
pub struct TelemetryConfigBuilder<S: State = Empty> { /* private fields */ }
Expand description

Use builder syntax to set the inputs and finish with build().

Implementations§

Source§

impl<S: State> TelemetryConfigBuilder<S>

Source

pub fn build(self) -> TelemetryConfig
where S: IsComplete,

Finish building and return the requested object

Source

pub fn enable_fmt_layer( self, value: bool, ) -> TelemetryConfigBuilder<SetEnableFmtLayer<S>>
where S::EnableFmtLayer: IsUnset,

Optional (Some / Option setters). Default: false.

Enable console output for debugging.

When enabled, spans and events will be printed to the console in addition to being exported through the configured span processors. This is useful for debugging but adds overhead and should be disabled in production.

This can also be controlled via the LAMBDA_TRACING_ENABLE_FMT_LAYER environment variable, which takes precedence over this setting when present:

  • Setting the env var to “true” will enable console output even if this field is false
  • Setting the env var to “false” will disable console output even if this field is true
  • Invalid values will log a warning and fall back to this code setting

This environment variable override allows toggling logging for debugging without code changes.

Default: false

Source

pub fn maybe_enable_fmt_layer( self, value: Option<bool>, ) -> TelemetryConfigBuilder<SetEnableFmtLayer<S>>
where S::EnableFmtLayer: IsUnset,

Optional (Some / Option setters). Default: false.

Enable console output for debugging.

When enabled, spans and events will be printed to the console in addition to being exported through the configured span processors. This is useful for debugging but adds overhead and should be disabled in production.

This can also be controlled via the LAMBDA_TRACING_ENABLE_FMT_LAYER environment variable, which takes precedence over this setting when present:

  • Setting the env var to “true” will enable console output even if this field is false
  • Setting the env var to “false” will disable console output even if this field is true
  • Invalid values will log a warning and fall back to this code setting

This environment variable override allows toggling logging for debugging without code changes.

Default: false

Source

pub fn set_global_provider( self, value: bool, ) -> TelemetryConfigBuilder<SetSetGlobalProvider<S>>
where S::SetGlobalProvider: IsUnset,

Optional (Some / Option setters). Default: true.

Set this provider as the global OpenTelemetry provider.

When enabled, the provider will be registered as the global provider for the OpenTelemetry API. This allows using the global tracer API without explicitly passing around the provider.

Default: true

Source

pub fn maybe_set_global_provider( self, value: Option<bool>, ) -> TelemetryConfigBuilder<SetSetGlobalProvider<S>>
where S::SetGlobalProvider: IsUnset,

Optional (Some / Option setters). Default: true.

Set this provider as the global OpenTelemetry provider.

When enabled, the provider will be registered as the global provider for the OpenTelemetry API. This allows using the global tracer API without explicitly passing around the provider.

Default: true

Source

pub fn resource(self, value: Resource) -> TelemetryConfigBuilder<SetResource<S>>
where S::Resource: IsUnset,

Optional (Some / Option setters).

Custom resource attributes for all spans.

If not provided, resource attributes will be automatically detected from the Lambda environment. Custom resources will override any automatically detected attributes with the same keys.

Default: None (auto-detected from Lambda environment)

Source

pub fn maybe_resource( self, value: Option<Resource>, ) -> TelemetryConfigBuilder<SetResource<S>>
where S::Resource: IsUnset,

Optional (Some / Option setters).

Custom resource attributes for all spans.

If not provided, resource attributes will be automatically detected from the Lambda environment. Custom resources will override any automatically detected attributes with the same keys.

Default: None (auto-detected from Lambda environment)

Source

pub fn env_var_name( self, value: String, ) -> TelemetryConfigBuilder<SetEnvVarName<S>>
where S::EnvVarName: IsUnset,

Optional (Some / Option setters).

Environment variable name to use for log level configuration.

This field specifies which environment variable should be used to configure the tracing subscriber’s log level filter. If not specified, the system will first check for RUST_LOG and then fall back to AWS_LAMBDA_LOG_LEVEL.

Default: None (uses RUST_LOG or AWS_LAMBDA_LOG_LEVEL)

Source

pub fn maybe_env_var_name( self, value: Option<String>, ) -> TelemetryConfigBuilder<SetEnvVarName<S>>
where S::EnvVarName: IsUnset,

Optional (Some / Option setters).

Environment variable name to use for log level configuration.

This field specifies which environment variable should be used to configure the tracing subscriber’s log level filter. If not specified, the system will first check for RUST_LOG and then fall back to AWS_LAMBDA_LOG_LEVEL.

Default: None (uses RUST_LOG or AWS_LAMBDA_LOG_LEVEL)

Source

pub fn processor_mode( self, value: ProcessorMode, ) -> TelemetryConfigBuilder<SetProcessorMode<S>>
where S::ProcessorMode: IsUnset,

Optional (Some / Option setters).

Span processing mode (sync/async/finalize)

Controls how spans are exported from the processor. This can be overridden by the LAMBDA_EXTENSION_SPAN_PROCESSOR_MODE environment variable, which takes precedence.

Default: None (uses environment variable or defaults to ProcessorMode::Sync)

Source

pub fn maybe_processor_mode( self, value: Option<ProcessorMode>, ) -> TelemetryConfigBuilder<SetProcessorMode<S>>
where S::ProcessorMode: IsUnset,

Optional (Some / Option setters).

Span processing mode (sync/async/finalize)

Controls how spans are exported from the processor. This can be overridden by the LAMBDA_EXTENSION_SPAN_PROCESSOR_MODE environment variable, which takes precedence.

Default: None (uses environment variable or defaults to ProcessorMode::Sync)

Source§

impl<S: State> TelemetryConfigBuilder<S>

Builder methods for adding span processors and other configuration

Source

pub fn with_span_processor<T>(self, processor: T) -> Self
where T: SpanProcessor + 'static,

Add a span processor to the tracer provider.

This method allows adding custom span processors for trace data processing. Multiple processors can be added by calling this method multiple times.

§Arguments
  • processor - A span processor implementing the SpanProcessor trait
§Examples
use lambda_otel_lite::TelemetryConfig;
use opentelemetry_sdk::trace::SimpleSpanProcessor;
use otlp_stdout_span_exporter::OtlpStdoutSpanExporter;

// Only use builder when adding custom processors
let config = TelemetryConfig::builder()
    .with_span_processor(SimpleSpanProcessor::new(
        Box::new(OtlpStdoutSpanExporter::default())
    ))
    .build();
Source

pub fn with_propagator<T>(self, propagator: T) -> Self
where T: TextMapPropagator + Send + Sync + 'static,

Add a propagator to the list of propagators.

Multiple propagators can be added and will be combined into a composite propagator. The default propagator is TraceContextPropagator.

§Arguments
§Examples
use lambda_otel_lite::TelemetryConfig;
use opentelemetry_sdk::propagation::BaggagePropagator;

let config = TelemetryConfig::builder()
    .with_propagator(BaggagePropagator::new())
    .build();
Source

pub fn with_named_propagator(self, name: &str) -> Self

Source

pub fn with_id_generator<T>(self, id_generator: T) -> Self
where T: IdGenerator + 'static,

Add a custom ID generator to the tracer provider.

This method allows setting a custom ID generator for trace and span IDs. This is particularly useful when integrating with AWS X-Ray, which requires a specific ID format.

§Arguments
  • id_generator - An ID generator implementing the IdGenerator trait
§Examples
use lambda_otel_lite::TelemetryConfig;
use opentelemetry_aws::trace::XrayIdGenerator;

// Configure with X-Ray compatible ID generator
let config = TelemetryConfig::builder()
    .with_id_generator(XrayIdGenerator::default())
    .build();

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more