From 4d32acd4369885d397021aed927cc22db272cc65 Mon Sep 17 00:00:00 2001 From: Daniel Harvey Date: Tue, 12 Sep 2023 16:59:05 +0100 Subject: [PATCH] Emit a log in the reference implementation --- Cargo.lock | 1 - rust-connector-sdk/Cargo.toml | 1 - rust-connector-sdk/src/connector/example.rs | 16 ++++++++++++++++ rust-connector-sdk/src/default_main.rs | 5 +---- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 78d0de5b..5e8a0990 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -906,7 +906,6 @@ dependencies = [ "axum", "axum-macros", "clap", - "log", "ndc-client", "opentelemetry", "opentelemetry-appender-log", diff --git a/rust-connector-sdk/Cargo.toml b/rust-connector-sdk/Cargo.toml index e7f76bfd..0240ac6c 100644 --- a/rust-connector-sdk/Cargo.toml +++ b/rust-connector-sdk/Cargo.toml @@ -16,7 +16,6 @@ async-trait = "0.1.68" axum = "0.6.18" axum-macros = "0.3.7" clap = { version = "4.3.9", features = ["derive", "env"] } -log = {version = "0.4.17"} ndc-client = { git = "http://github.com/hasura/ndc-spec.git", tag = "v0.1.0-rc.3" } opentelemetry = { version = "0.20", features = [ "rt-tokio", diff --git a/rust-connector-sdk/src/connector/example.rs b/rust-connector-sdk/src/connector/example.rs index af593443..6db1ac59 100644 --- a/rust-connector-sdk/src/connector/example.rs +++ b/rust-connector-sdk/src/connector/example.rs @@ -1,6 +1,8 @@ use std::collections::BTreeMap; use async_trait::async_trait; +use opentelemetry::logs::Logger; +use opentelemetry::logs::LoggerProvider; use tracing::info_span; use tracing::Instrument; @@ -47,6 +49,20 @@ impl Connector for Example { _configuration: &Self::Configuration, _state: &Self::State, ) -> Result<(), HealthError> { + // emit an OpenTelemetry log + let provider = opentelemetry::global::logger_provider(); + + let logger = provider.logger("ndc_hub_example"); + + let log_record = opentelemetry::logs::LogRecordBuilder::new() + .with_severity_number(opentelemetry::logs::Severity::Info) + .with_attribute("event.name", "health-check-success") + .with_attribute("event.domain", "database") + .with_body("Health check OK!".into()) + .build(); + + logger.emit(log_record); + Ok(()) } diff --git a/rust-connector-sdk/src/default_main.rs b/rust-connector-sdk/src/default_main.rs index 6f341f0c..264d98d7 100644 --- a/rust-connector-sdk/src/default_main.rs +++ b/rust-connector-sdk/src/default_main.rs @@ -11,7 +11,6 @@ use ndc_client::models::{ }; use opentelemetry::{global, sdk::propagation::TraceContextPropagator}; use opentelemetry_api::KeyValue; -use opentelemetry_appender_log::OpenTelemetryLogBridge; use opentelemetry_otlp::{WithExportConfig, OTEL_EXPORTER_OTLP_ENDPOINT_DEFAULT}; use opentelemetry_sdk::trace::Sampler; use prometheus::Registry; @@ -178,9 +177,7 @@ fn init_tracing(serve_command: &ServeCommand) -> Result<(), Box> { ) .build(); - // configure the `log` crate to output via OpenTelemetry - let otel_log_appender = OpenTelemetryLogBridge::new(&logger_provider); - log::set_boxed_logger(Box::new(otel_log_appender)).unwrap(); + global::set_logger_provider(logger_provider); tracing_subscriber::registry() .with(