|
1 |
| -use log::{error, Level}; |
2 | 1 | use opentelemetry::KeyValue;
|
3 |
| -use opentelemetry_appender_log::OpenTelemetryLogBridge; |
| 2 | +use opentelemetry_appender_tracing::layer; |
4 | 3 | use opentelemetry_sdk::logs::LoggerProvider;
|
5 | 4 | use opentelemetry_sdk::Resource;
|
6 |
| -use opentelemetry_semantic_conventions::resource::SERVICE_NAME; |
| 5 | +use tracing::error; |
| 6 | +use tracing_subscriber::prelude::*; |
7 | 7 |
|
8 | 8 | fn main() {
|
9 |
| - // Setup LoggerProvider with a stdout exporter |
10 | 9 | let exporter = opentelemetry_stdout::LogExporter::default();
|
11 |
| - let logger_provider = LoggerProvider::builder() |
12 |
| - .with_resource(Resource::new([KeyValue::new( |
13 |
| - SERVICE_NAME, |
14 |
| - "logs-basic-example", |
| 10 | + let provider: LoggerProvider = LoggerProvider::builder() |
| 11 | + .with_resource(Resource::new(vec![KeyValue::new( |
| 12 | + "service.name", |
| 13 | + "log-appender-tracing-example", |
15 | 14 | )]))
|
16 | 15 | .with_simple_exporter(exporter)
|
17 | 16 | .build();
|
| 17 | + let layer = layer::OpenTelemetryTracingBridge::new(&provider); |
| 18 | + tracing_subscriber::registry().with(layer).init(); |
18 | 19 |
|
19 |
| - // Setup Log Appender for the log crate. |
20 |
| - let otel_log_appender = OpenTelemetryLogBridge::new(&logger_provider); |
21 |
| - log::set_boxed_logger(Box::new(otel_log_appender)).unwrap(); |
22 |
| - log::set_max_level(Level::Error.to_level_filter()); |
23 |
| - |
24 |
| - // Emit logs using macros from the log crate. |
25 |
| - // These logs gets piped through OpenTelemetry bridge and gets exported to stdout. |
26 |
| - error!(target: "my-target", "hello from {}. My price is {}", "apple", 2.99); |
| 20 | + error!(name : "my-event-name", target : "my-system", event_id = 20, user_name = "otel", user_email = "[email protected]", message = "This is an example message"); |
| 21 | + let _ = provider.shutdown(); |
27 | 22 | }
|
0 commit comments