Skip to content

Commit 33abef2

Browse files
cijothomasTommyCpp
andauthored
Log SDK, OTLP builders to accept Resource directly instead of wrapping in Config (#1788)
Co-authored-by: Zhongyang Wu <zhongyang.wu@outlook.com>
1 parent d21b13a commit 33abef2

File tree

15 files changed

+110
-129
lines changed

15 files changed

+110
-129
lines changed

examples/logs-basic/src/main.rs

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use log::{error, Level};
22
use opentelemetry::KeyValue;
33
use opentelemetry_appender_log::OpenTelemetryLogBridge;
4-
use opentelemetry_sdk::logs::{Config, LoggerProvider};
4+
use opentelemetry_sdk::logs::LoggerProvider;
55
use opentelemetry_sdk::Resource;
66
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;
77

@@ -13,12 +13,10 @@ fn main() {
1313
// Ok(serde_json::to_writer_pretty(writer, &data).unwrap()))
1414
.build();
1515
let logger_provider = LoggerProvider::builder()
16-
.with_config(
17-
Config::default().with_resource(Resource::new(vec![KeyValue::new(
18-
SERVICE_NAME,
19-
"logs-basic-example",
20-
)])),
21-
)
16+
.with_resource(Resource::new(vec![KeyValue::new(
17+
SERVICE_NAME,
18+
"logs-basic-example",
19+
)]))
2220
.with_simple_exporter(exporter)
2321
.build();
2422

opentelemetry-appender-tracing/benches/logs.rs

+5-7
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use opentelemetry::logs::LogResult;
1919
use opentelemetry::KeyValue;
2020
use opentelemetry_appender_tracing::layer as tracing_layer;
2121
use opentelemetry_sdk::export::logs::{LogData, LogExporter};
22-
use opentelemetry_sdk::logs::{Config, LogProcessor, LoggerProvider};
22+
use opentelemetry_sdk::logs::{LogProcessor, LoggerProvider};
2323
use opentelemetry_sdk::Resource;
2424
use tracing::error;
2525
use tracing_subscriber::prelude::*;
@@ -125,12 +125,10 @@ fn benchmark_with_ot_layer(c: &mut Criterion, enabled: bool, bench_name: &str) {
125125
let exporter = NoopExporter { enabled };
126126
let processor = NoopProcessor::new(Box::new(exporter));
127127
let provider = LoggerProvider::builder()
128-
.with_config(
129-
Config::default().with_resource(Resource::new(vec![KeyValue::new(
130-
"service.name",
131-
"benchmark",
132-
)])),
133-
)
128+
.with_resource(Resource::new(vec![KeyValue::new(
129+
"service.name",
130+
"benchmark",
131+
)]))
134132
.with_log_processor(processor)
135133
.build();
136134
let ot_layer = tracing_layer::OpenTelemetryTracingBridge::new(&provider);

opentelemetry-appender-tracing/examples/basic.rs

+5-10
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,17 @@
22
33
use opentelemetry::KeyValue;
44
use opentelemetry_appender_tracing::layer;
5-
use opentelemetry_sdk::{
6-
logs::{Config, LoggerProvider},
7-
Resource,
8-
};
5+
use opentelemetry_sdk::{logs::LoggerProvider, Resource};
96
use tracing::error;
107
use tracing_subscriber::prelude::*;
118

129
fn main() {
1310
let exporter = opentelemetry_stdout::LogExporter::default();
1411
let provider: LoggerProvider = LoggerProvider::builder()
15-
.with_config(
16-
Config::default().with_resource(Resource::new(vec![KeyValue::new(
17-
"service.name",
18-
"log-appender-tracing-example",
19-
)])),
20-
)
12+
.with_resource(Resource::new(vec![KeyValue::new(
13+
"service.name",
14+
"log-appender-tracing-example",
15+
)]))
2116
.with_simple_exporter(exporter)
2217
.build();
2318
let layer = layer::OpenTelemetryTracingBridge::new(&provider);

opentelemetry-otlp/CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
- `OtlpMetricPipeline.build()` no longer invoke the
88
`global::set_meter_provider`. User who setup the pipeline must do it
99
themselves using `global::set_meter_provider(meter_provider.clone());`.
10+
- Add `with_resource` on `OtlpLogPipeline`, replacing the `with_config` method.
11+
Instead of using
12+
`.with_config(Config::default().with_resource(RESOURCE::default()))` users must
13+
now use `.with_resource(RESOURCE::default())` to configure Resource when using
14+
`OtlpLogPipeline`.
1015

1116
## v0.16.0
1217

opentelemetry-otlp/examples/basic-otlp-http/src/main.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
99
use opentelemetry_otlp::WithExportConfig;
1010
use opentelemetry_sdk::trace as sdktrace;
1111
use opentelemetry_sdk::{
12-
logs::{self as sdklogs, Config},
12+
logs::{self as sdklogs},
1313
Resource,
1414
};
1515
use tracing::info;
@@ -28,7 +28,7 @@ static RESOURCE: Lazy<Resource> = Lazy::new(|| {
2828
fn init_logs() -> Result<sdklogs::LoggerProvider, opentelemetry::logs::LogError> {
2929
opentelemetry_otlp::new_pipeline()
3030
.logging()
31-
.with_log_config(Config::default().with_resource(RESOURCE.clone()))
31+
.with_resource(RESOURCE.clone())
3232
.with_exporter(
3333
opentelemetry_otlp::new_exporter()
3434
.http()

opentelemetry-otlp/examples/basic-otlp/src/main.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ use opentelemetry::{
99
};
1010
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
1111
use opentelemetry_otlp::{ExportConfig, WithExportConfig};
12-
use opentelemetry_sdk::logs::Config;
1312
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
1413
use std::error::Error;
1514
use tracing::info;
@@ -58,7 +57,7 @@ fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, Metric
5857
fn init_logs() -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
5958
opentelemetry_otlp::new_pipeline()
6059
.logging()
61-
.with_log_config(Config::default().with_resource(RESOURCE.clone()))
60+
.with_resource(RESOURCE.clone())
6261
.with_exporter(
6362
opentelemetry_otlp::new_exporter()
6463
.tonic()

opentelemetry-otlp/src/logs.rs

+20-17
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use std::fmt::Debug;
1414

1515
use opentelemetry::logs::LogError;
1616

17-
use opentelemetry_sdk::{export::logs::LogData, runtime::RuntimeChannel};
17+
use opentelemetry_sdk::{export::logs::LogData, runtime::RuntimeChannel, Resource};
1818

1919
/// Compression algorithm to use, defaults to none.
2020
pub const OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: &str = "OTEL_EXPORTER_OTLP_LOGS_COMPRESSION";
@@ -35,7 +35,7 @@ impl OtlpPipeline {
3535
/// Create a OTLP logging pipeline.
3636
pub fn logging(self) -> OtlpLogPipeline<NoExporterConfig> {
3737
OtlpLogPipeline {
38-
log_config: None,
38+
resource: None,
3939
exporter_builder: NoExporterConfig(()),
4040
batch_config: None,
4141
}
@@ -111,15 +111,17 @@ impl opentelemetry_sdk::export::logs::LogExporter for LogExporter {
111111
#[derive(Debug)]
112112
pub struct OtlpLogPipeline<EB> {
113113
exporter_builder: EB,
114-
log_config: Option<opentelemetry_sdk::logs::Config>,
114+
resource: Option<Resource>,
115115
batch_config: Option<opentelemetry_sdk::logs::BatchConfig>,
116116
}
117117

118118
impl<EB> OtlpLogPipeline<EB> {
119-
/// Set the log provider configuration.
120-
pub fn with_log_config(mut self, log_config: opentelemetry_sdk::logs::Config) -> Self {
121-
self.log_config = Some(log_config);
122-
self
119+
/// Set the Resource associated with log provider.
120+
pub fn with_resource(self, resource: Resource) -> Self {
121+
OtlpLogPipeline {
122+
resource: Some(resource),
123+
..self
124+
}
123125
}
124126

125127
/// Set the batch log processor configuration, and it will override the env vars.
@@ -137,7 +139,7 @@ impl OtlpLogPipeline<NoExporterConfig> {
137139
) -> OtlpLogPipeline<LogExporterBuilder> {
138140
OtlpLogPipeline {
139141
exporter_builder: pipeline.into(),
140-
log_config: self.log_config,
142+
resource: self.resource,
141143
batch_config: self.batch_config,
142144
}
143145
}
@@ -152,7 +154,7 @@ impl OtlpLogPipeline<LogExporterBuilder> {
152154
pub fn install_simple(self) -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
153155
Ok(build_simple_with_exporter(
154156
self.exporter_builder.build_log_exporter()?,
155-
self.log_config,
157+
self.resource,
156158
))
157159
}
158160

@@ -168,7 +170,7 @@ impl OtlpLogPipeline<LogExporterBuilder> {
168170
) -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
169171
Ok(build_batch_with_exporter(
170172
self.exporter_builder.build_log_exporter()?,
171-
self.log_config,
173+
self.resource,
172174
runtime,
173175
self.batch_config,
174176
))
@@ -177,20 +179,21 @@ impl OtlpLogPipeline<LogExporterBuilder> {
177179

178180
fn build_simple_with_exporter(
179181
exporter: LogExporter,
180-
log_config: Option<opentelemetry_sdk::logs::Config>,
182+
resource: Option<Resource>,
181183
) -> opentelemetry_sdk::logs::LoggerProvider {
182184
let mut provider_builder =
183185
opentelemetry_sdk::logs::LoggerProvider::builder().with_simple_exporter(exporter);
184-
if let Some(config) = log_config {
185-
provider_builder = provider_builder.with_config(config);
186+
if let Some(resource) = resource {
187+
provider_builder = provider_builder.with_resource(resource);
186188
}
187-
// logger would be created in the tracing appender
189+
// logger would be created in the appenders like
190+
// opentelemetry-appender-tracing, opentelemetry-appender-log etc.
188191
provider_builder.build()
189192
}
190193

191194
fn build_batch_with_exporter<R: RuntimeChannel>(
192195
exporter: LogExporter,
193-
log_config: Option<opentelemetry_sdk::logs::Config>,
196+
resource: Option<Resource>,
194197
runtime: R,
195198
batch_config: Option<opentelemetry_sdk::logs::BatchConfig>,
196199
) -> opentelemetry_sdk::logs::LoggerProvider {
@@ -200,8 +203,8 @@ fn build_batch_with_exporter<R: RuntimeChannel>(
200203
.build();
201204
provider_builder = provider_builder.with_log_processor(batch_processor);
202205

203-
if let Some(config) = log_config {
204-
provider_builder = provider_builder.with_config(config);
206+
if let Some(resource) = resource {
207+
provider_builder = provider_builder.with_resource(resource);
205208
}
206209
// logger would be created in the tracing appender
207210
provider_builder.build()

opentelemetry-otlp/tests/integration_test/tests/logs.rs

+4-6
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,10 @@ fn init_logs() -> Result<sdklogs::LoggerProvider, LogError> {
1414
opentelemetry_otlp::new_pipeline()
1515
.logging()
1616
.with_exporter(opentelemetry_otlp::new_exporter().tonic())
17-
.with_log_config(
18-
sdklogs::config().with_resource(Resource::new(vec![KeyValue::new(
19-
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
20-
"logs-integration-test",
21-
)])),
22-
)
17+
.with_resource(Resource::new(vec![KeyValue::new(
18+
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
19+
"logs-integration-test",
20+
)]))
2321
.install_batch(runtime::Tokio)
2422
}
2523

opentelemetry-sdk/CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44

55
- Add "metrics", "logs" to default features. With this, default feature list is
66
"trace", "metrics" and "logs".
7+
- Add `with_resource` on Builder for LoggerProvider, replacing the `with_config`
8+
method. Instead of using
9+
`.with_config(Config::default().with_resource(RESOURCE::default()))` users
10+
must now use `.with_resource(RESOURCE::default())` to configure Resource on
11+
logger provider.
712
- Removed dependency on `ordered-float`.
813

914
## v0.23.0

opentelemetry-sdk/src/logs/config.rs

-23
This file was deleted.

0 commit comments

Comments
 (0)