@@ -125,18 +125,10 @@ impl LoggerProvider {
125
125
if errs. is_empty ( ) {
126
126
Ok ( ( ) )
127
127
} else {
128
- otel_warn ! (
129
- name: "logger_provider_shutdown_error" ,
130
- error = format!( "{:?}" , errs)
131
- ) ;
132
- Err ( LogError :: Other ( format ! ( "{:?}" , errs) . into ( ) ) )
128
+ Err ( LogError :: Other ( format ! ( "{errs:?}" ) . into ( ) ) )
133
129
}
134
130
} else {
135
- let error = LogError :: AlreadyShutdown ( "LoggerProvider" . to_string ( ) ) ;
136
- otel_debug ! (
137
- name: "LoggerProvider.Shutdown.AlreadyShutdown" ,
138
- ) ;
139
- Err ( error)
131
+ Err ( LogError :: AlreadyShutdown ( "LoggerProvider" . to_string ( ) ) )
140
132
}
141
133
}
142
134
}
@@ -154,6 +146,24 @@ impl LoggerProviderInner {
154
146
let mut errs = vec ! [ ] ;
155
147
for processor in & self . processors {
156
148
if let Err ( err) = processor. shutdown ( ) {
149
+ // Log at debug level because:
150
+ // - The error is also returned to the user for handling (if applicable)
151
+ // - Or the error occurs during `LoggerProviderInner::Drop` as part of telemetry shutdown,
152
+ // which is non-actionable by the user
153
+ match err {
154
+ // specific handling for mutex poisioning
155
+ LogError :: MutexPoisoned ( _) => {
156
+ otel_debug ! (
157
+ name: "LoggerProvider.Drop.ShutdownMutexPoisoned" ,
158
+ ) ;
159
+ }
160
+ _ => {
161
+ otel_debug ! (
162
+ name: "LoggerProvider.Drop.ShutdownError" ,
163
+ error = format!( "{err}" )
164
+ ) ;
165
+ }
166
+ }
157
167
errs. push ( err) ;
158
168
}
159
169
}
@@ -164,13 +174,10 @@ impl LoggerProviderInner {
164
174
impl Drop for LoggerProviderInner {
165
175
fn drop ( & mut self ) {
166
176
if !self . is_shutdown . load ( Ordering :: Relaxed ) {
167
- let errs = self . shutdown ( ) ;
168
- if !errs. is_empty ( ) {
169
- global:: handle_error ( LogError :: Other ( format ! ( "{:?}" , errs) . into ( ) ) ) ;
170
- }
177
+ let _ = self . shutdown ( ) ; // errors are handled within shutdown
171
178
} else {
172
179
otel_debug ! (
173
- name: "LoggerProvider.Drop.AlreadyShutdown" ,
180
+ name: "LoggerProvider.Drop.AlreadyShutdown"
174
181
) ;
175
182
}
176
183
}
0 commit comments