improve code for otel (#418)

This commit is contained in:
houseme
2025-05-26 12:05:57 +08:00
committed by GitHub
parent ea7a178ca7
commit 7abcfe31e8
+20 -10
View File
@@ -21,6 +21,7 @@ use std::io::IsTerminal;
use tracing::info; use tracing::info;
use tracing_error::ErrorLayer; use tracing_error::ErrorLayer;
use tracing_opentelemetry::{MetricsLayer, OpenTelemetryLayer}; use tracing_opentelemetry::{MetricsLayer, OpenTelemetryLayer};
use tracing_subscriber::fmt::format::FmtSpan;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter, Layer}; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter, Layer};
/// A guard object that manages the lifecycle of OpenTelemetry components. /// A guard object that manages the lifecycle of OpenTelemetry components.
@@ -103,6 +104,7 @@ pub fn init_telemetry(config: &OtelConfig) -> OtelGuard {
let meter_interval = config.meter_interval.unwrap_or(METER_INTERVAL); let meter_interval = config.meter_interval.unwrap_or(METER_INTERVAL);
let logger_level = config.logger_level.as_deref().unwrap_or(DEFAULT_LOG_LEVEL); let logger_level = config.logger_level.as_deref().unwrap_or(DEFAULT_LOG_LEVEL);
let service_name = config.service_name.as_deref().unwrap_or(APP_NAME); let service_name = config.service_name.as_deref().unwrap_or(APP_NAME);
let environment = config.environment.as_deref().unwrap_or(ENVIRONMENT);
// Pre-create resource objects to avoid repeated construction // Pre-create resource objects to avoid repeated construction
let res = resource(config); let res = resource(config);
@@ -203,15 +205,23 @@ pub fn init_telemetry(config: &OtelConfig) -> OtelGuard {
// configuring tracing // configuring tracing
{ {
// configure the formatting layer // configure the formatting layer
let enable_color = std::io::stdout().is_terminal(); let fmt_layer = {
let fmt_layer = tracing_subscriber::fmt::layer() let enable_color = std::io::stdout().is_terminal();
.with_target(true) let mut layer = tracing_subscriber::fmt::layer()
.with_ansi(enable_color) .with_target(true)
.with_thread_names(true) .with_ansi(enable_color)
.with_thread_ids(true) .with_thread_names(true)
.with_file(true) .with_thread_ids(true)
.with_line_number(true) .with_file(true)
.with_filter(build_env_filter(logger_level, None)); .with_line_number(true);
// Only add full span events tracking in the development environment
if environment != ENVIRONMENT {
layer = layer.with_span_events(FmtSpan::FULL);
}
layer.with_filter(build_env_filter(logger_level, None))
};
let filter = build_env_filter(logger_level, None); let filter = build_env_filter(logger_level, None);
let otel_filter = build_env_filter(logger_level, None); let otel_filter = build_env_filter(logger_level, None);
@@ -237,7 +247,7 @@ pub fn init_telemetry(config: &OtelConfig) -> OtelGuard {
"OpenTelemetry telemetry initialized with OTLP endpoint: {}, logger_level: {},RUST_LOG env: {}", "OpenTelemetry telemetry initialized with OTLP endpoint: {}, logger_level: {},RUST_LOG env: {}",
endpoint, endpoint,
logger_level, logger_level,
std::env::var("RUST_LOG").unwrap_or_else(|_| "未设置".to_string()) std::env::var("RUST_LOG").unwrap_or_else(|_| "Not set".to_string())
); );
} }
} }