Skip to content

Commit

Permalink
Emit a log in the reference implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
danieljharvey committed Sep 12, 2023
1 parent edfd759 commit 4d32acd
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 6 deletions.
1 change: 0 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion rust-connector-sdk/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
16 changes: 16 additions & 0 deletions rust-connector-sdk/src/connector/example.rs
Original file line number Diff line number Diff line change
@@ -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;

Expand Down Expand Up @@ -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(())
}

Expand Down
5 changes: 1 addition & 4 deletions rust-connector-sdk/src/default_main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -178,9 +177,7 @@ fn init_tracing(serve_command: &ServeCommand) -> Result<(), Box<dyn Error>> {
)
.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(
Expand Down

0 comments on commit 4d32acd

Please sign in to comment.