apollo-opentelemetry 0.8.0

OpenTelemetry configuration types for Apollo platform
Documentation
//! Logger provider configuration.
//!
//! See the [OpenTelemetry Logs SDK specification](https://opentelemetry.io/docs/specs/otel/logs/sdk/)
//! for details.

mod processor;

pub(crate) use processor::BatchLogRecordProcessorConfig;
pub(crate) use processor::LogRecordLimitsConfig;
pub(crate) use processor::LogRecordProcessor;
pub(crate) use processor::RateLimitedLogRecordProcessorConfig;

use apollo_configuration::configuration;

/// Logger provider configuration.
#[configuration]
pub(crate) struct LoggerProviderConfig {
    /// Log record processors for collecting and exporting logs.
    pub(crate) processors: Vec<LogRecordProcessor>,

    /// Log record limits.
    pub(crate) limits: LogRecordLimitsConfig,
}

#[cfg(test)]
mod tests {
    use apollo_configuration::parse_yaml;

    use crate::config::OpenTelemetryConfig;

    #[test]
    fn parse_logger_provider() {
        let config: OpenTelemetryConfig = parse_yaml(
            indoc::indoc! {"
                logger_provider:
                  processors:
                    - batch:
                        exporter:
                          console: {}
            "},
            &Default::default(),
        )
        .unwrap();

        assert!(!config.logger_provider.processors.is_empty());
    }
}