@@ -13,10 +13,7 @@ use opentelemetry::{
13
13
#[ cfg( feature = "logs_level_enabled" ) ]
14
14
use opentelemetry:: logs:: Severity ;
15
15
16
- use std:: {
17
- borrow:: Cow ,
18
- sync:: { Arc , Weak } ,
19
- } ;
16
+ use std:: { borrow:: Cow , sync:: Arc } ;
20
17
21
18
#[ derive( Debug , Clone ) ]
22
19
/// Creator for `Logger` instances.
@@ -55,16 +52,11 @@ impl opentelemetry::logs::LoggerProvider for LoggerProvider {
55
52
}
56
53
57
54
fn library_logger ( & self , library : Arc < InstrumentationLibrary > ) -> Self :: Logger {
58
- Logger :: new ( library, Arc :: downgrade ( & self . inner ) )
55
+ Logger :: new ( library, self . clone ( ) )
59
56
}
60
57
}
61
58
62
59
impl LoggerProvider {
63
- /// Build a new logger provider.
64
- pub ( crate ) fn new ( inner : Arc < LoggerProviderInner > ) -> Self {
65
- LoggerProvider { inner }
66
- }
67
-
68
60
/// Create a new `LoggerProvider` builder.
69
61
pub fn builder ( ) -> Builder {
70
62
Builder :: default ( )
@@ -91,7 +83,7 @@ impl LoggerProvider {
91
83
/// Shuts down this `LoggerProvider`, panicking on failure.
92
84
pub fn shutdown ( & mut self ) -> Vec < LogResult < ( ) > > {
93
85
self . try_shutdown ( )
94
- . expect ( "canont shutdown LoggerProvider when child Loggers are still active" )
86
+ . expect ( "cannot shutdown LoggerProvider when child Loggers are still active" )
95
87
}
96
88
97
89
/// Attempts to shutdown this `LoggerProvider`, succeeding only when
@@ -108,7 +100,7 @@ impl LoggerProvider {
108
100
}
109
101
110
102
#[ derive( Debug ) ]
111
- pub ( crate ) struct LoggerProviderInner {
103
+ struct LoggerProviderInner {
112
104
processors : Vec < Box < dyn LogProcessor > > ,
113
105
config : Config ,
114
106
}
@@ -179,13 +171,13 @@ impl Builder {
179
171
/// [`LogRecord`]: opentelemetry::logs::LogRecord
180
172
pub struct Logger {
181
173
instrumentation_lib : Arc < InstrumentationLibrary > ,
182
- provider : Weak < LoggerProviderInner > ,
174
+ provider : LoggerProvider ,
183
175
}
184
176
185
177
impl Logger {
186
178
pub ( crate ) fn new (
187
179
instrumentation_lib : Arc < InstrumentationLibrary > ,
188
- provider : Weak < LoggerProviderInner > ,
180
+ provider : LoggerProvider ,
189
181
) -> Self {
190
182
Logger {
191
183
instrumentation_lib,
@@ -194,8 +186,8 @@ impl Logger {
194
186
}
195
187
196
188
/// LoggerProvider associated with this logger.
197
- pub fn provider ( & self ) -> Option < LoggerProvider > {
198
- self . provider . upgrade ( ) . map ( LoggerProvider :: new )
189
+ pub fn provider ( & self ) -> & LoggerProvider {
190
+ & self . provider
199
191
}
200
192
201
193
/// Instrumentation library information of this logger.
@@ -207,16 +199,14 @@ impl Logger {
207
199
impl opentelemetry:: logs:: Logger for Logger {
208
200
/// Emit a `LogRecord`.
209
201
fn emit ( & self , record : LogRecord ) {
210
- let provider = match self . provider ( ) {
211
- Some ( provider) => provider,
212
- None => return ,
213
- } ;
202
+ let provider = self . provider ( ) ;
203
+ let config = provider. config ( ) ;
204
+ let processors = provider. log_processors ( ) ;
214
205
let trace_context = Context :: map_current ( |cx| {
215
206
cx. has_active_span ( )
216
207
. then ( || TraceContext :: from ( cx. span ( ) . span_context ( ) ) )
217
208
} ) ;
218
- let config = provider. config ( ) ;
219
- for processor in provider. log_processors ( ) {
209
+ for p in processors {
220
210
let mut record = record. clone ( ) ;
221
211
if let Some ( ref trace_context) = trace_context {
222
212
record. trace_context = Some ( trace_context. clone ( ) )
@@ -226,16 +216,13 @@ impl opentelemetry::logs::Logger for Logger {
226
216
resource : config. resource . clone ( ) ,
227
217
instrumentation : self . instrumentation_library ( ) . clone ( ) ,
228
218
} ;
229
- processor . emit ( data) ;
219
+ p . emit ( data) ;
230
220
}
231
221
}
232
222
233
223
#[ cfg( feature = "logs_level_enabled" ) ]
234
224
fn event_enabled ( & self , level : Severity , target : & str ) -> bool {
235
- let provider = match self . provider ( ) {
236
- Some ( provider) => provider,
237
- None => return false ,
238
- } ;
225
+ let provider = self . provider ( ) ;
239
226
240
227
let mut enabled = false ;
241
228
for processor in provider. log_processors ( ) {
0 commit comments