@@ -16,15 +16,12 @@ use opentelemetry_sdk::{
1616 logs:: { LogRecord , Logger , LoggerProvider } ,
1717 metrics:: { MeterProviderBuilder , PeriodicReader , SdkMeterProvider , Temporality } ,
1818 propagation:: TraceContextPropagator ,
19+ resource:: { Resource , ResourceDetector , TelemetryResourceDetector } ,
1920 runtime,
2021 trace:: TracerProvider ,
21- Resource ,
2222} ;
2323use opentelemetry_semantic_conventions:: {
24- attribute:: {
25- CODE_FILEPATH , CODE_LINENO , SERVICE_NAME , SERVICE_VERSION , TELEMETRY_SDK_LANGUAGE ,
26- TELEMETRY_SDK_NAME , TELEMETRY_SDK_VERSION ,
27- } ,
24+ attribute:: { CODE_FILEPATH , CODE_LINENO , SERVICE_NAME , SERVICE_VERSION } ,
2825 SCHEMA_URL ,
2926} ;
3027use tracing:: Event as TracingEvent ;
@@ -367,32 +364,35 @@ pub(crate) fn log_level_as_severity(level: log::Level) -> Severity {
367364pub fn resource ( crate_name : & ' static str , package_version : & ' static str ) -> Resource {
368365 let project_name = std:: env:: var ( "SHUTTLE_PROJECT_NAME" ) . ok ( ) ;
369366
370- Resource :: from_schema_url (
371- [
372- Some ( KeyValue :: new (
373- SERVICE_NAME ,
374- project_name. clone ( ) . unwrap_or_else ( || crate_name. into ( ) ) ,
375- ) ) ,
376- Some ( KeyValue :: new ( SERVICE_VERSION , package_version) ) ,
377- Some ( KeyValue :: new ( TELEMETRY_SDK_NAME , "opentelemetry" ) ) ,
378- Some ( KeyValue :: new ( TELEMETRY_SDK_VERSION , "0.27.1" ) ) ,
379- Some ( KeyValue :: new ( TELEMETRY_SDK_LANGUAGE , "rust" ) ) ,
380- Some ( KeyValue :: new ( "shuttle.project.crate.name" , crate_name) ) ,
381- Some ( KeyValue :: new (
382- "shuttle.deployment.env" ,
383- std:: env:: var ( "SHUTTLE_ENV" )
367+ // `TelemetryResourceDetector::detect()` automatically provides:
368+ // - telemetry.sdk.name
369+ // - telemetry.sdk.version
370+ // - telemetry.sdk.language
371+ TelemetryResourceDetector
372+ . detect ( Default :: default ( ) )
373+ . merge ( Box :: new ( Resource :: from_schema_url (
374+ [
375+ Some ( KeyValue :: new (
376+ SERVICE_NAME ,
377+ project_name. clone ( ) . unwrap_or_else ( || crate_name. into ( ) ) ,
378+ ) ) ,
379+ Some ( KeyValue :: new ( SERVICE_VERSION , package_version) ) ,
380+ Some ( KeyValue :: new ( "shuttle.project.crate.name" , crate_name) ) ,
381+ Some ( KeyValue :: new (
382+ "shuttle.deployment.env" ,
383+ std:: env:: var ( "SHUTTLE_ENV" )
384+ . ok ( )
385+ . unwrap_or ( "unknown" . into ( ) ) ,
386+ ) ) ,
387+ std:: env:: var ( "SHUTTLE_PROJECT_ID" )
384388 . ok ( )
385- . unwrap_or ( "unknown" . into ( ) ) ,
386- ) ) ,
387- std:: env:: var ( "SHUTTLE_PROJECT_ID" )
388- . ok ( )
389- . map ( |value| KeyValue :: new ( "shuttle.project.id" , value) ) ,
390- project_name. map ( |value| KeyValue :: new ( "shuttle.project.name" , value) ) ,
391- ]
392- . into_iter ( )
393- . flatten ( ) ,
394- SCHEMA_URL ,
395- )
389+ . map ( |value| KeyValue :: new ( "shuttle.project.id" , value) ) ,
390+ project_name. map ( |value| KeyValue :: new ( "shuttle.project.name" , value) ) ,
391+ ]
392+ . into_iter ( )
393+ . flatten ( ) ,
394+ SCHEMA_URL ,
395+ ) ) )
396396}
397397
398398pub fn init_log_subscriber ( endpoint : & Option < String > , resource : Resource ) -> LoggerProvider {
0 commit comments