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 (#1788)

Co-authored-by: Zhongyang Wu <zhongyang.wu@outlook.com>
  • 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.