Skip to content

Commit

Permalink
Log SDK, OTLP builders to accept Resource directly instead of wrappin…
Browse files Browse the repository at this point in the history
…g in Config (open-telemetry#1788)

Co-authored-by: Zhongyang Wu <[email protected]>
  • Loading branch information
cijothomas and TommyCpp authored May 23, 2024
1 parent d21b13a commit 33abef2
Show file tree
Hide file tree
Showing 15 changed files with 110 additions and 129 deletions.
12 changes: 5 additions & 7 deletions examples/logs-basic/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use log::{error, Level};
use opentelemetry::KeyValue;
use opentelemetry_appender_log::OpenTelemetryLogBridge;
use opentelemetry_sdk::logs::{Config, LoggerProvider};
use opentelemetry_sdk::logs::LoggerProvider;
use opentelemetry_sdk::Resource;
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;

Expand All @@ -13,12 +13,10 @@ fn main() {
// Ok(serde_json::to_writer_pretty(writer, &data).unwrap()))
.build();
let logger_provider = LoggerProvider::builder()
.with_config(
Config::default().with_resource(Resource::new(vec![KeyValue::new(
SERVICE_NAME,
"logs-basic-example",
)])),
)
.with_resource(Resource::new(vec![KeyValue::new(
SERVICE_NAME,
"logs-basic-example",
)]))
.with_simple_exporter(exporter)
.build();

Expand Down
12 changes: 5 additions & 7 deletions opentelemetry-appender-tracing/benches/logs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use opentelemetry::logs::LogResult;
use opentelemetry::KeyValue;
use opentelemetry_appender_tracing::layer as tracing_layer;
use opentelemetry_sdk::export::logs::{LogData, LogExporter};
use opentelemetry_sdk::logs::{Config, LogProcessor, LoggerProvider};
use opentelemetry_sdk::logs::{LogProcessor, LoggerProvider};
use opentelemetry_sdk::Resource;
use tracing::error;
use tracing_subscriber::prelude::*;
Expand Down Expand Up @@ -125,12 +125,10 @@ fn benchmark_with_ot_layer(c: &mut Criterion, enabled: bool, bench_name: &str) {
let exporter = NoopExporter { enabled };
let processor = NoopProcessor::new(Box::new(exporter));
let provider = LoggerProvider::builder()
.with_config(
Config::default().with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"benchmark",
)])),
)
.with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"benchmark",
)]))
.with_log_processor(processor)
.build();
let ot_layer = tracing_layer::OpenTelemetryTracingBridge::new(&provider);
Expand Down
15 changes: 5 additions & 10 deletions opentelemetry-appender-tracing/examples/basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,17 @@
use opentelemetry::KeyValue;
use opentelemetry_appender_tracing::layer;
use opentelemetry_sdk::{
logs::{Config, LoggerProvider},
Resource,
};
use opentelemetry_sdk::{logs::LoggerProvider, Resource};
use tracing::error;
use tracing_subscriber::prelude::*;

fn main() {
let exporter = opentelemetry_stdout::LogExporter::default();
let provider: LoggerProvider = LoggerProvider::builder()
.with_config(
Config::default().with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"log-appender-tracing-example",
)])),
)
.with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"log-appender-tracing-example",
)]))
.with_simple_exporter(exporter)
.build();
let layer = layer::OpenTelemetryTracingBridge::new(&provider);
Expand Down
5 changes: 5 additions & 0 deletions opentelemetry-otlp/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
- `OtlpMetricPipeline.build()` no longer invoke the
`global::set_meter_provider`. User who setup the pipeline must do it
themselves using `global::set_meter_provider(meter_provider.clone());`.
- Add `with_resource` on `OtlpLogPipeline`, replacing the `with_config` method.
Instead of using
`.with_config(Config::default().with_resource(RESOURCE::default()))` users must
now use `.with_resource(RESOURCE::default())` to configure Resource when using
`OtlpLogPipeline`.

## v0.16.0

Expand Down
4 changes: 2 additions & 2 deletions opentelemetry-otlp/examples/basic-otlp-http/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
use opentelemetry_otlp::WithExportConfig;
use opentelemetry_sdk::trace as sdktrace;
use opentelemetry_sdk::{
logs::{self as sdklogs, Config},
logs::{self as sdklogs},
Resource,
};
use tracing::info;
Expand All @@ -28,7 +28,7 @@ static RESOURCE: Lazy<Resource> = Lazy::new(|| {
fn init_logs() -> Result<sdklogs::LoggerProvider, opentelemetry::logs::LogError> {
opentelemetry_otlp::new_pipeline()
.logging()
.with_log_config(Config::default().with_resource(RESOURCE.clone()))
.with_resource(RESOURCE.clone())
.with_exporter(
opentelemetry_otlp::new_exporter()
.http()
Expand Down
3 changes: 1 addition & 2 deletions opentelemetry-otlp/examples/basic-otlp/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ use opentelemetry::{
};
use opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge;
use opentelemetry_otlp::{ExportConfig, WithExportConfig};
use opentelemetry_sdk::logs::Config;
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
use std::error::Error;
use tracing::info;
Expand Down Expand Up @@ -58,7 +57,7 @@ fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, Metric
fn init_logs() -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
opentelemetry_otlp::new_pipeline()
.logging()
.with_log_config(Config::default().with_resource(RESOURCE.clone()))
.with_resource(RESOURCE.clone())
.with_exporter(
opentelemetry_otlp::new_exporter()
.tonic()
Expand Down
37 changes: 20 additions & 17 deletions opentelemetry-otlp/src/logs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use std::fmt::Debug;

use opentelemetry::logs::LogError;

use opentelemetry_sdk::{export::logs::LogData, runtime::RuntimeChannel};
use opentelemetry_sdk::{export::logs::LogData, runtime::RuntimeChannel, Resource};

/// Compression algorithm to use, defaults to none.
pub const OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: &str = "OTEL_EXPORTER_OTLP_LOGS_COMPRESSION";
Expand All @@ -35,7 +35,7 @@ impl OtlpPipeline {
/// Create a OTLP logging pipeline.
pub fn logging(self) -> OtlpLogPipeline<NoExporterConfig> {
OtlpLogPipeline {
log_config: None,
resource: None,
exporter_builder: NoExporterConfig(()),
batch_config: None,
}
Expand Down Expand Up @@ -111,15 +111,17 @@ impl opentelemetry_sdk::export::logs::LogExporter for LogExporter {
#[derive(Debug)]
pub struct OtlpLogPipeline<EB> {
exporter_builder: EB,
log_config: Option<opentelemetry_sdk::logs::Config>,
resource: Option<Resource>,
batch_config: Option<opentelemetry_sdk::logs::BatchConfig>,
}

impl<EB> OtlpLogPipeline<EB> {
/// Set the log provider configuration.
pub fn with_log_config(mut self, log_config: opentelemetry_sdk::logs::Config) -> Self {
self.log_config = Some(log_config);
self
/// Set the Resource associated with log provider.
pub fn with_resource(self, resource: Resource) -> Self {
OtlpLogPipeline {
resource: Some(resource),
..self
}
}

/// Set the batch log processor configuration, and it will override the env vars.
Expand All @@ -137,7 +139,7 @@ impl OtlpLogPipeline<NoExporterConfig> {
) -> OtlpLogPipeline<LogExporterBuilder> {
OtlpLogPipeline {
exporter_builder: pipeline.into(),
log_config: self.log_config,
resource: self.resource,
batch_config: self.batch_config,
}
}
Expand All @@ -152,7 +154,7 @@ impl OtlpLogPipeline<LogExporterBuilder> {
pub fn install_simple(self) -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
Ok(build_simple_with_exporter(
self.exporter_builder.build_log_exporter()?,
self.log_config,
self.resource,
))
}

Expand All @@ -168,7 +170,7 @@ impl OtlpLogPipeline<LogExporterBuilder> {
) -> Result<opentelemetry_sdk::logs::LoggerProvider, LogError> {
Ok(build_batch_with_exporter(
self.exporter_builder.build_log_exporter()?,
self.log_config,
self.resource,
runtime,
self.batch_config,
))
Expand All @@ -177,20 +179,21 @@ impl OtlpLogPipeline<LogExporterBuilder> {

fn build_simple_with_exporter(
exporter: LogExporter,
log_config: Option<opentelemetry_sdk::logs::Config>,
resource: Option<Resource>,
) -> opentelemetry_sdk::logs::LoggerProvider {
let mut provider_builder =
opentelemetry_sdk::logs::LoggerProvider::builder().with_simple_exporter(exporter);
if let Some(config) = log_config {
provider_builder = provider_builder.with_config(config);
if let Some(resource) = resource {
provider_builder = provider_builder.with_resource(resource);
}
// logger would be created in the tracing appender
// logger would be created in the appenders like
// opentelemetry-appender-tracing, opentelemetry-appender-log etc.
provider_builder.build()
}

fn build_batch_with_exporter<R: RuntimeChannel>(
exporter: LogExporter,
log_config: Option<opentelemetry_sdk::logs::Config>,
resource: Option<Resource>,
runtime: R,
batch_config: Option<opentelemetry_sdk::logs::BatchConfig>,
) -> opentelemetry_sdk::logs::LoggerProvider {
Expand All @@ -200,8 +203,8 @@ fn build_batch_with_exporter<R: RuntimeChannel>(
.build();
provider_builder = provider_builder.with_log_processor(batch_processor);

if let Some(config) = log_config {
provider_builder = provider_builder.with_config(config);
if let Some(resource) = resource {
provider_builder = provider_builder.with_resource(resource);
}
// logger would be created in the tracing appender
provider_builder.build()
Expand Down
10 changes: 4 additions & 6 deletions opentelemetry-otlp/tests/integration_test/tests/logs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,10 @@ fn init_logs() -> Result<sdklogs::LoggerProvider, LogError> {
opentelemetry_otlp::new_pipeline()
.logging()
.with_exporter(opentelemetry_otlp::new_exporter().tonic())
.with_log_config(
sdklogs::config().with_resource(Resource::new(vec![KeyValue::new(
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
"logs-integration-test",
)])),
)
.with_resource(Resource::new(vec![KeyValue::new(
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
"logs-integration-test",
)]))
.install_batch(runtime::Tokio)
}

Expand Down
5 changes: 5 additions & 0 deletions opentelemetry-sdk/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@

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

## v0.23.0
Expand Down
23 changes: 0 additions & 23 deletions opentelemetry-sdk/src/logs/config.rs

This file was deleted.

Loading

0 comments on commit 33abef2

Please sign in to comment.