Skip to content

Commit f8806fe

Browse files
committed
simplify the otel logging
1 parent e165c1b commit f8806fe

File tree

3 files changed

+20
-77
lines changed

3 files changed

+20
-77
lines changed

rust/cubestore/cubestore/src/bin/cubestored.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use cubestore::config::{validate_config, Config, CubeServices};
22
use cubestore::http::status::serve_status_probes;
3+
use cubestore::telemetry::otel_tracing::init_tracing_telemetry;
34
use cubestore::telemetry::{init_agent_sender, track_event};
45
use cubestore::util::logger::init_cube_logger;
56
use cubestore::util::metrics::init_metrics;
@@ -12,7 +13,7 @@ use std::collections::HashMap;
1213
use std::time::Duration;
1314
use tokio::runtime::Builder;
1415

15-
const PACKAGE_JSON: &'static str = std::include_str!("../../../package.json");
16+
const PACKAGE_JSON: &'static str = include_str!("../../../package.json");
1617

1718
fn main() {
1819
let package_json: Value = serde_json::from_str(PACKAGE_JSON).unwrap();
@@ -54,6 +55,9 @@ fn main() {
5455
))
5556
})
5657
.unwrap();
58+
if enable_telemetry {
59+
init_tracing_telemetry();
60+
}
5761
init_cube_logger(enable_telemetry);
5862

5963
log::info!("Cube Store version {}", version);
Lines changed: 15 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,28 @@
1-
use lazy_static::lazy_static;
21
use log::{Level, Log, Metadata, Record};
3-
use opentelemetry::global::ObjectSafeSpan;
4-
use opentelemetry::logs::AnyValue::String;
5-
use opentelemetry::logs::{LogRecord, Logger, LoggerProvider};
6-
use opentelemetry::trace::{SpanKind, Tracer, TracerProvider};
7-
use opentelemetry::{KeyValue, StringValue};
8-
use opentelemetry_sdk::logs::{LogRecord as LogRecordSDK, Logger as LoggerSDK};
9-
use opentelemetry_sdk::trace::Tracer as TracerSDK;
2+
use opentelemetry::trace::TracerProvider;
3+
use tracing::{event, Level as TracingLevel};
104
use tracing_subscriber::layer::SubscriberExt;
115
use tracing_subscriber::Registry;
126

137
const OTEL_SERVICE_NAME: &str = "cubestore";
148

15-
lazy_static! {
16-
pub static ref OT_TRACER: TracerSDK = init_tracing().unwrap();
17-
pub static ref OT_LOGGER: LoggerSDK = init_logging().unwrap();
18-
}
19-
209
pub fn init_tracing_telemetry() {
21-
let telemetry = tracing_opentelemetry::layer().with_tracer(OT_TRACER.clone());
22-
let subscriber = Registry::default().with(telemetry);
23-
24-
tracing::subscriber::set_global_default(subscriber)
25-
.expect("setting default tracing subscriber failed");
26-
}
27-
28-
pub fn init_tracing() -> Result<TracerSDK, Box<dyn std::error::Error>> {
2910
let otlp_exporter = opentelemetry_otlp::new_exporter()
3011
.http()
3112
.with_http_client(reqwest::Client::new());
3213
let tracer_provider = opentelemetry_otlp::new_pipeline()
3314
.tracing()
3415
.with_exporter(otlp_exporter)
35-
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
16+
.install_batch(opentelemetry_sdk::runtime::Tokio)
17+
.expect("Should be able to initialise the tracer_provider");
3618

3719
let tracer = tracer_provider.tracer_builder(OTEL_SERVICE_NAME).build();
38-
Ok(tracer)
39-
}
4020

41-
pub fn init_logging() -> Result<LoggerSDK, Box<dyn std::error::Error>> {
42-
let otlp_exporter = opentelemetry_otlp::new_exporter()
43-
.http()
44-
.with_http_client(reqwest::Client::new());
45-
let logger_provider = opentelemetry_otlp::new_pipeline()
46-
.logging()
47-
.with_exporter(otlp_exporter)
48-
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
21+
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
22+
let subscriber = Registry::default().with(telemetry);
4923

50-
let logger = logger_provider.logger_builder(OTEL_SERVICE_NAME).build();
51-
Ok(logger)
24+
tracing::subscriber::set_global_default(subscriber)
25+
.expect("setting default tracing subscriber failed");
5226
}
5327

5428
pub struct OpenTelemetryLogger {
@@ -74,25 +48,19 @@ impl Log for OpenTelemetryLogger {
7448

7549
match record.metadata().level() {
7650
Level::Error => {
77-
// Log error messages using OpenTelemetry logger
78-
let logger = &*OT_LOGGER;
79-
emit_log(record, logger);
51+
event!(TracingLevel::ERROR, "{}", record.args().to_string());
8052
}
8153
Level::Warn => {
82-
// Log warning messages using OpenTelemetry logger
83-
let logger = &*OT_LOGGER;
84-
emit_log(record, logger);
54+
event!(TracingLevel::WARN, "{}", record.args().to_string());
55+
}
56+
Level::Info => {
57+
event!(TracingLevel::INFO, "{}", record.args().to_string());
8558
}
86-
Level::Info => {}
8759
Level::Debug => {
88-
// Create an OpenTelemetry trace for Debug level
89-
let tracer = &*OT_TRACER;
90-
create_log_trace(record, tracer);
60+
event!(TracingLevel::DEBUG, "{}", record.args().to_string());
9161
}
9262
Level::Trace => {
93-
// Create an OpenTelemetry trace for Trace level
94-
let tracer = &*OT_TRACER;
95-
create_log_trace(record, tracer);
63+
event!(TracingLevel::TRACE, "{}", record.args().to_string());
9664
}
9765
}
9866
}
@@ -101,30 +69,3 @@ impl Log for OpenTelemetryLogger {
10169
self.logger.flush()
10270
}
10371
}
104-
105-
fn emit_log(record: &Record, logger: &LoggerSDK) {
106-
let mut rec = LogRecordSDK::default();
107-
108-
rec.set_target(record.target().to_string());
109-
rec.set_severity_text(record.level().as_str());
110-
rec.set_body(String(StringValue::from(record.args().to_string())));
111-
112-
logger.emit(rec);
113-
}
114-
115-
fn create_log_trace(record: &Record, tracer: &TracerSDK) {
116-
let mut span = tracer
117-
.span_builder(format!(
118-
"{} ({})",
119-
record.module_path().unwrap_or(record.target()),
120-
record.file().unwrap_or("-")
121-
))
122-
.with_kind(SpanKind::Server)
123-
.with_attributes([
124-
KeyValue::new("level", record.level().as_str()),
125-
KeyValue::new("target", record.target().to_string()),
126-
KeyValue::new("message", record.args().to_string()),
127-
])
128-
.start(tracer);
129-
span.end();
130-
}

rust/cubestore/cubestore/src/util/logger.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::telemetry::otel_tracing::init_tracing_telemetry;
21
use crate::telemetry::{OpenTelemetryLogger, ReportingLogger};
32
use log::{Level, Log, Metadata, Record};
43
use simple_logger::SimpleLogger;
@@ -34,7 +33,6 @@ pub fn init_cube_logger(enable_telemetry: bool) {
3433
// No need to introduce special env vars, let's use the de facto standard ones
3534
if let Ok(_) = env::var("OTEL_EXPORTER_OTLP_ENDPOINT") {
3635
logger = Box::new(OpenTelemetryLogger::new(logger));
37-
init_tracing_telemetry();
3836
} else {
3937
logger = Box::new(ReportingLogger::new(logger));
4038
}

0 commit comments

Comments
 (0)