Skip to content

Commit 80da656

Browse files
authored
Change to owned LoggerProvider (#1455)
1 parent 8688e7e commit 80da656

File tree

4 files changed

+24
-30
lines changed

4 files changed

+24
-30
lines changed

opentelemetry-sdk/CHANGELOG.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
- **Breaking** Remove `TextMapCompositePropagator` [#1373](https://github.com/open-telemetry/opentelemetry-rust/pull/1373). Use `TextMapCompositePropagator` in opentelemetry API.
3131

3232
- [#1375](https://github.com/open-telemetry/opentelemetry-rust/pull/1375/) Fix metric collections during PeriodicReader shutdown
33-
- **Breaking** [#1480](https://github.com/open-telemetry/opentelemetry-rust/pull/1480) Remove fine grained `BatchConfig` configurations from `BatchLogProcessorBuilder` and `BatchSpanProcessorBuilder`. Use `BatchConfigBuilder` to construct a `BatchConfig` instance and pass it using `BatchLogProcessorBuilder::with_batch_config` or `BatchSpanProcessorBuilder::with_batch_config`.
33+
- **Breaking** [#1480](https://github.com/open-telemetry/opentelemetry-rust/pull/1480) Remove fine grained `BatchConfig` configurations from `BatchLogProcessorBuilder` and `BatchSpanProcessorBuilder`. Use `BatchConfigBuilder` to construct a `BatchConfig` instance and pass it using `BatchLogProcessorBuilder::with_batch_config` or `BatchSpanProcessorBuilder::with_batch_config`.
3434
- **Breaking** [#1480](https://github.com/open-telemetry/opentelemetry-rust/pull/1480) Remove mutating functions from `BatchConfig`, use `BatchConfigBuilder` to construct a `BatchConfig` instance.
3535
- **Breaking** [#1495](https://github.com/open-telemetry/opentelemetry-rust/pull/1495) Remove Batch LogRecord&Span Processor configuration via non-standard environment variables. Use the following table to migrate from the no longer supported non-standard environment variables to the standard ones.
3636

@@ -41,6 +41,11 @@
4141
| OTEL_BSP_SCHEDULE_DELAY_MILLIS | OTEL_BSP_SCHEDULE_DELAY |
4242
| OTEL_BSP_EXPORT_TIMEOUT_MILLIS | OTEL_BSP_EXPORT_TIMEOUT |
4343

44+
- **Breaking** [1455](https://github.com/open-telemetry/opentelemetry-rust/pull/1455) Make the LoggerProvider Owned
45+
- `Logger` now takes an Owned Logger instead of a `Weak<LoggerProviderInner>`
46+
- `LoggerProviderInner` is no longer `pub (crate)`
47+
- `Logger.provider()` now returns `&LoggerProvider` instead of an `Option<LoggerProvider>`
48+
4449
## v0.21.2
4550

4651
### Fixed

opentelemetry-sdk/src/logs/log_emitter.rs

+14-27
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ use opentelemetry::{
1313
#[cfg(feature = "logs_level_enabled")]
1414
use opentelemetry::logs::Severity;
1515

16-
use std::{
17-
borrow::Cow,
18-
sync::{Arc, Weak},
19-
};
16+
use std::{borrow::Cow, sync::Arc};
2017

2118
#[derive(Debug, Clone)]
2219
/// Creator for `Logger` instances.
@@ -55,16 +52,11 @@ impl opentelemetry::logs::LoggerProvider for LoggerProvider {
5552
}
5653

5754
fn library_logger(&self, library: Arc<InstrumentationLibrary>) -> Self::Logger {
58-
Logger::new(library, Arc::downgrade(&self.inner))
55+
Logger::new(library, self.clone())
5956
}
6057
}
6158

6259
impl LoggerProvider {
63-
/// Build a new logger provider.
64-
pub(crate) fn new(inner: Arc<LoggerProviderInner>) -> Self {
65-
LoggerProvider { inner }
66-
}
67-
6860
/// Create a new `LoggerProvider` builder.
6961
pub fn builder() -> Builder {
7062
Builder::default()
@@ -91,7 +83,7 @@ impl LoggerProvider {
9183
/// Shuts down this `LoggerProvider`, panicking on failure.
9284
pub fn shutdown(&mut self) -> Vec<LogResult<()>> {
9385
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")
9587
}
9688

9789
/// Attempts to shutdown this `LoggerProvider`, succeeding only when
@@ -108,7 +100,7 @@ impl LoggerProvider {
108100
}
109101

110102
#[derive(Debug)]
111-
pub(crate) struct LoggerProviderInner {
103+
struct LoggerProviderInner {
112104
processors: Vec<Box<dyn LogProcessor>>,
113105
config: Config,
114106
}
@@ -179,13 +171,13 @@ impl Builder {
179171
/// [`LogRecord`]: opentelemetry::logs::LogRecord
180172
pub struct Logger {
181173
instrumentation_lib: Arc<InstrumentationLibrary>,
182-
provider: Weak<LoggerProviderInner>,
174+
provider: LoggerProvider,
183175
}
184176

185177
impl Logger {
186178
pub(crate) fn new(
187179
instrumentation_lib: Arc<InstrumentationLibrary>,
188-
provider: Weak<LoggerProviderInner>,
180+
provider: LoggerProvider,
189181
) -> Self {
190182
Logger {
191183
instrumentation_lib,
@@ -194,8 +186,8 @@ impl Logger {
194186
}
195187

196188
/// 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
199191
}
200192

201193
/// Instrumentation library information of this logger.
@@ -207,16 +199,14 @@ impl Logger {
207199
impl opentelemetry::logs::Logger for Logger {
208200
/// Emit a `LogRecord`.
209201
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();
214205
let trace_context = Context::map_current(|cx| {
215206
cx.has_active_span()
216207
.then(|| TraceContext::from(cx.span().span_context()))
217208
});
218-
let config = provider.config();
219-
for processor in provider.log_processors() {
209+
for p in processors {
220210
let mut record = record.clone();
221211
if let Some(ref trace_context) = trace_context {
222212
record.trace_context = Some(trace_context.clone())
@@ -226,16 +216,13 @@ impl opentelemetry::logs::Logger for Logger {
226216
resource: config.resource.clone(),
227217
instrumentation: self.instrumentation_library().clone(),
228218
};
229-
processor.emit(data);
219+
p.emit(data);
230220
}
231221
}
232222

233223
#[cfg(feature = "logs_level_enabled")]
234224
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();
239226

240227
let mut enabled = false;
241228
for processor in provider.log_processors() {

opentelemetry/CHANGELOG.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
- [#1410](https://github.com/open-telemetry/opentelemetry-rust/pull/1410) Add experimental synchronous gauge. This is behind the feature flag, and can be enabled by enabling the feature `otel_unstable` for opentelemetry crate.
88

9-
- [#1410](https://github.com/open-telemetry/opentelemetry-rust/pull/1410) Guidelines to add new unstable/experimental features.
9+
- [#1410](https://github.com/open-telemetry/opentelemetry-rust/pull/1410) Guidelines to add new unstable/experimental features.
1010

1111
### Changed
1212

@@ -17,6 +17,8 @@ gains, and avoids `IndexMap` dependency. This affects `body` and `attributes` of
1717
`LogRecord`.
1818
[#1353](https://github.com/open-telemetry/opentelemetry-rust/pull/1353)
1919
- Add `TextMapCompositePropagator` [#1373](https://github.com/open-telemetry/opentelemetry-rust/pull/1373)
20+
- Turned off events for `NoopLogger` to save on operations
21+
[1455](https://github.com/open-telemetry/opentelemetry-rust/pull/1455)
2022

2123
### Removed
2224

opentelemetry/src/logs/noop.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ impl Logger for NoopLogger {
4242
fn emit(&self, _record: LogRecord) {}
4343
#[cfg(feature = "logs_level_enabled")]
4444
fn event_enabled(&self, _level: super::Severity, _target: &str) -> bool {
45-
true
45+
false
4646
}
4747
}

0 commit comments

Comments
 (0)