1
- use std:: { ascii:: escape_default, sync:: OnceLock , time :: Duration } ;
1
+ use std:: { ascii:: escape_default, sync:: OnceLock } ;
2
2
3
3
use anyhow:: bail;
4
4
use opentelemetry:: logs:: { LogRecord , Logger , LoggerProvider } ;
5
5
use opentelemetry_sdk:: {
6
- logs:: { BatchConfigBuilder , BatchLogProcessor , Logger as SdkLogger } ,
7
- resource:: { EnvResourceDetector , TelemetryResourceDetector } ,
6
+ logs:: { BatchConfigBuilder , BatchLogProcessor , SdkLogger } ,
7
+ resource:: { EnvResourceDetector , ResourceDetector , TelemetryResourceDetector } ,
8
8
Resource ,
9
9
} ;
10
10
@@ -68,18 +68,17 @@ fn escape_non_utf8_buf(buf: &[u8]) -> String {
68
68
69
69
/// Initialize the OTel logging backend.
70
70
pub ( crate ) fn init_otel_logging_backend ( spin_version : String ) -> anyhow:: Result < ( ) > {
71
- let resource = Resource :: from_detectors (
72
- Duration :: from_secs ( 5 ) ,
73
- vec ! [
71
+ let resource = Resource :: builder ( )
72
+ . with_detectors ( & [
74
73
// Set service.name from env OTEL_SERVICE_NAME > env OTEL_RESOURCE_ATTRIBUTES > spin
75
74
// Set service.version from Spin metadata
76
- Box :: new( SpinResourceDetector :: new( spin_version) ) ,
75
+ Box :: new ( SpinResourceDetector :: new ( spin_version) ) as Box < dyn ResourceDetector > ,
77
76
// Sets fields from env OTEL_RESOURCE_ATTRIBUTES
78
77
Box :: new ( EnvResourceDetector :: new ( ) ) ,
79
78
// Sets telemetry.sdk{name, language, version}
80
79
Box :: new ( TelemetryResourceDetector ) ,
81
- ] ,
82
- ) ;
80
+ ] )
81
+ . build ( ) ;
83
82
84
83
// This will configure the exporter based on the OTEL_EXPORTER_* environment variables. We
85
84
// currently default to using the HTTP exporter but in the future we could select off of the
@@ -95,10 +94,10 @@ pub(crate) fn init_otel_logging_backend(spin_version: String) -> anyhow::Result<
95
94
OtlpProtocol :: HttpJson => bail ! ( "http/json OTLP protocol is not supported" ) ,
96
95
} ;
97
96
98
- let provider = opentelemetry_sdk:: logs:: LoggerProvider :: builder ( )
97
+ let provider = opentelemetry_sdk:: logs:: SdkLoggerProvider :: builder ( )
99
98
. with_resource ( resource)
100
99
. with_log_processor (
101
- BatchLogProcessor :: builder ( exporter, opentelemetry_sdk :: runtime :: Tokio )
100
+ BatchLogProcessor :: builder ( exporter)
102
101
. with_batch_config ( BatchConfigBuilder :: default ( ) . build ( ) )
103
102
. build ( ) ,
104
103
)
0 commit comments