Skip to content

Commit daa3b5e

Browse files
psandanacijothomas
andauthored
refactor: opentelemetry-etw-logs - cleaning up public API (#183)
Co-authored-by: Cijo Thomas <cijo.thomas@gmail.com>
1 parent b9c71b9 commit daa3b5e

File tree

9 files changed

+277
-213
lines changed

9 files changed

+277
-213
lines changed

opentelemetry-etw-logs/CHANGELOG.md

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

33
## vNext
44

5+
- Added the `with_etw_exporter` trait method to `LoggerProviderBuilder`.
6+
This is now the only way to add an ETW exporter. The following line
7+
will add an ETW exporter using the given provider name:
8+
9+
```rust
10+
SdkLoggerProvider::builder().with_etw_exporter("provider-name").build();
11+
```
12+
13+
Event name now will be inferred from the `LogRecord` being emitted. If no name is given, it defaults to `Log`.
14+
15+
- Removed `opentelemetry_etw_logs::{ExporterConfig, ReentrantLogProcessor, ETWExporter}` from the public API. Ability to customize Provider Group or Keyword may be added in the future.
16+
17+
- Renamed `logs_level_enabled` feature to `spec_unstable_logs_enabled` to match `opentelemetry` features.
18+
19+
- `default` feature does not enable `spec_unstable_logs_enabled` anymore.
20+
521
## v0.7.0
622

723
- Bump msrv to 1.75.0

opentelemetry-etw-logs/Cargo.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ tracelogging_dynamic = "1.2.1"
1616
opentelemetry = { workspace = true, features = ["logs"] }
1717
opentelemetry_sdk = { workspace = true, features = ["logs"] }
1818
serde_json = "1.0.113"
19+
futures-executor = "0.3.31"
1920

2021
[dev-dependencies]
2122
opentelemetry-appender-tracing = { workspace = true }
23+
tokio = { version = "1.0", features = ["full"] }
2224
tracing = { version = "0.1", default-features = false, features = ["std"] }
2325
tracing-core = "0.1.31"
2426
tracing-subscriber = { version = "0.3.0", default-features = false, features = [
@@ -28,11 +30,11 @@ tracing-subscriber = { version = "0.3.0", default-features = false, features = [
2830
microbench = "0.5"
2931

3032
[features]
31-
logs_level_enabled = [
33+
spec_unstable_logs_enabled = [
3234
"opentelemetry/spec_unstable_logs_enabled",
3335
"opentelemetry_sdk/spec_unstable_logs_enabled",
3436
]
35-
default = ["logs_level_enabled"]
37+
default = []
3638

3739
[[example]]
3840
name = "basic"

opentelemetry-etw-logs/examples/basic.rs

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
//! run with `$ cargo run --example basic --all-features
66
//!
77
//! To view the telemetry emitted to ETW you can use [`logman`](https://learn.microsoft.com/windows-server/administration/windows-commands/logman) along with `perfview`. `logman` will listen to ETW
8-
//! events from the given provider (on this example, `my-provider-name`) and store them in a `.etl` file.
8+
//! events from the given provider (on this example, `provider-name`) and store them in a `.etl` file.
99
//! [`perfview`](https://github.com/microsoft/perfview) will allow you to visualize the events.
1010
//!
1111
//! Instructions using Powershell:
1212
//!
13-
//! 1. Get the ETW Session Guid for the given provider (on this example `my-provider-name`):
13+
//! 1. Get the ETW Session Guid for the given provider (on this example `provider-name`):
1414
//! ```
15-
//! $EtwSessionGuid = (new-object System.Diagnostics.Tracing.EventSource("my-provider-name")).Guid.ToString()`
15+
//! $EtwSessionGuid = (new-object System.Diagnostics.Tracing.EventSource("provider-name")).Guid.ToString()`
1616
//! ```
1717
//! 1. Start Logman session:
1818
//! ```
@@ -34,30 +34,19 @@
3434
//! a. Open PerfView.
3535
//! a. Go the location of the `.etl` file: `OtelETWExampleBasic.log_000001.etl` and open it.
3636
//! a. Double-click `Events` in the left-panel.
37-
//! a. Double-click the `my-provider-name/my-event-name` in the left-panel.
37+
//! a. Double-click the `provider-name/event-name` in the left-panel.
3838
//! a. You should see the events in the right-panel.
3939
//!
4040
4141
use opentelemetry_appender_tracing::layer;
42-
use opentelemetry_etw_logs::{ExporterConfig, ReentrantLogProcessor};
42+
use opentelemetry_etw_logs::ETWLoggerProviderBuilderExt;
4343
use opentelemetry_sdk::logs::SdkLoggerProvider;
44-
use std::collections::HashMap;
4544
use tracing::error;
4645
use tracing_subscriber::prelude::*;
4746

4847
fn init_logger() -> SdkLoggerProvider {
49-
let exporter_config = ExporterConfig {
50-
default_keyword: 1,
51-
keywords_map: HashMap::new(),
52-
};
53-
let reenterant_processor = ReentrantLogProcessor::new(
54-
"my-provider-name",
55-
"my-event-name".into(),
56-
None,
57-
exporter_config,
58-
);
5948
SdkLoggerProvider::builder()
60-
.with_log_processor(reenterant_processor)
49+
.with_etw_exporter("provider-name")
6150
.build()
6251
}
6352

@@ -68,7 +57,7 @@ fn main() {
6857
tracing_subscriber::registry().with(layer).init();
6958

7059
error!(
71-
name: "my-event-name",
60+
name: "event-name",
7261
event_id = 20,
7362
user_name = "otel user",
7463
user_email = "otel@opentelemetry.io"

0 commit comments

Comments
 (0)