Skip to content

Commit f356f9f

Browse files
authored
User-events log exporter - cleanup public API (#174)
1 parent 1a1b188 commit f356f9f

File tree

5 files changed

+54
-21
lines changed

5 files changed

+54
-21
lines changed

.cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"Kumar",
4343
"Lalit",
4444
"msrv",
45+
"myprovider",
4546
"Ochtman",
4647
"openetelemetry",
4748
"opentelemetry",

opentelemetry-user-events-logs/CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
## vNext
44

5+
- Removed provider group from being appended to the tracepoint name.
6+
For example, tracepoint `myprovider_L2K1Gmyprovider` becomes `myprovider_L2K1`.
7+
- Added the `with_user_event_exporter` trait method to `LoggerProviderBuilder`.
8+
This is now the only way to add a user-events exporter. The following line
9+
will add a user-events exporter using the given provider name:
10+
11+
```rust
12+
SdkLoggerProvider::builder().with_user_event_exporter("my-provider").build();
13+
```
14+
15+
- Removed `opentelemetry_user_events_logs::{ExporterConfig, ReentrantLogProcessor, UserEventsExporter}` from the public API. Ability to customize Provider Group, Keyword will be added future.
16+
517
## v0.9.0
618

719
- Bump msrv to 1.75.0

opentelemetry-user-events-logs/examples/basic-logs.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
33
use opentelemetry_appender_tracing::layer;
44
use opentelemetry_sdk::logs::SdkLoggerProvider;
5-
use opentelemetry_user_events_logs::{ExporterConfig, ReentrantLogProcessor, UserEventsExporter};
6-
use std::collections::HashMap;
5+
use opentelemetry_user_events_logs::UserEventsLoggerProviderBuilderExt;
76
use std::sync::atomic::{AtomicBool, Ordering};
87
use std::sync::Arc;
98
use std::{thread, time::Duration};
@@ -15,14 +14,8 @@ fn init_logger() -> SdkLoggerProvider {
1514
let fmt_layer = tracing_subscriber::fmt::layer().with_filter(filter_fmt);
1615
let _guard = tracing_subscriber::registry().with(fmt_layer).set_default(); // Temporary subscriber active for this function
1716

18-
let exporter_config = ExporterConfig {
19-
default_keyword: 1,
20-
keywords_map: HashMap::new(),
21-
};
22-
let exporter = UserEventsExporter::new("test", None, exporter_config);
23-
let reenterant_processor = ReentrantLogProcessor::new(exporter);
2417
SdkLoggerProvider::builder()
25-
.with_log_processor(reenterant_processor)
18+
.with_user_event_exporter("myprovider")
2619
.build()
2720
}
2821

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,39 @@
1-
mod exporter;
2-
pub use exporter::*;
1+
use std::collections::HashMap;
2+
3+
use exporter::{ExporterConfig, UserEventsExporter};
4+
use opentelemetry_sdk::logs::LoggerProviderBuilder;
5+
use reentrant_logprocessor::ReentrantLogProcessor;
36

7+
mod exporter;
48
mod reentrant_logprocessor;
5-
pub use reentrant_logprocessor::*;
9+
10+
/// Extension trait for adding a user event exporter to the logger provider builder.
11+
pub trait UserEventsLoggerProviderBuilderExt {
12+
/// Adds a user event exporter to the logger provider builder with the given provider name.
13+
///
14+
/// Tracepoint names are generated by combining the provider name with the event level and keyword
15+
/// in the following format:
16+
/// `ProviderName + '_' + 'L' + EventLevel + 'K' + EventKeyword`
17+
///
18+
/// For example, if "myprovider" is the provider name, the following tracepoint names are created:
19+
/// - `myprovider_L4K1`
20+
/// - `myprovider_L5K1`
21+
/// - `myprovider_L3K1`
22+
/// - `myprovider_L2K1`
23+
/// - `myprovider_L1K1`
24+
///
25+
/// Note that the `EventKeyword` is currently hardcoded to be `1`.
26+
fn with_user_event_exporter(self, provider_name: &str) -> Self;
27+
}
28+
29+
impl UserEventsLoggerProviderBuilderExt for LoggerProviderBuilder {
30+
fn with_user_event_exporter(self, provider_name: &str) -> Self {
31+
let exporter_config = ExporterConfig {
32+
default_keyword: 1,
33+
keywords_map: HashMap::new(),
34+
};
35+
let exporter = UserEventsExporter::new(provider_name, None, exporter_config);
36+
let reenterant_processor = ReentrantLogProcessor::new(exporter);
37+
self.with_log_processor(reenterant_processor)
38+
}
39+
}

stress/src/user_events.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,15 @@
2424

2525
use opentelemetry_appender_tracing::layer;
2626
use opentelemetry_sdk::logs::SdkLoggerProvider;
27-
use opentelemetry_user_events_logs::{ExporterConfig, ReentrantLogProcessor, UserEventsExporter};
28-
use std::collections::HashMap;
27+
use opentelemetry_user_events_logs::UserEventsLoggerProviderBuilderExt;
2928
use tracing::info;
3029
use tracing_subscriber::prelude::*;
3130
mod throughput;
3231

3332
// Function to initialize the logger
3433
fn init_logger() -> SdkLoggerProvider {
35-
let exporter_config = ExporterConfig {
36-
default_keyword: 1,
37-
keywords_map: HashMap::new(),
38-
};
39-
let exporter = UserEventsExporter::new("testprovider", None, exporter_config);
40-
let reentrant_processor = ReentrantLogProcessor::new(exporter);
4134
SdkLoggerProvider::builder()
42-
.with_log_processor(reentrant_processor)
35+
.with_user_event_exporter("provider_name")
4336
.build()
4437
}
4538

0 commit comments

Comments
 (0)