Skip to content

Commit bde5b7f

Browse files
committed
fix queue full panic
1 parent 689a554 commit bde5b7f

File tree

6 files changed

+420
-30
lines changed

6 files changed

+420
-30
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,4 @@ tokio-stream = "0.1"
4747
tracing = { version = "0.1", default-features = false }
4848
tracing-core = { version = "0.1", default-features = false }
4949
tracing-subscriber = { version = "0.3", default-features = false }
50-
url = { version = "2.5.2", default-features = false } #https://github.com/servo/rust-url/issues/992
50+
url = {version = "=2.5.2", default-features = false }

examples/logs-batch/Cargo.toml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[package]
2+
name = "logs-batch"
3+
version = "0.1.0"
4+
edition = "2021"
5+
license = "Apache-2.0"
6+
publish = false
7+
8+
[dependencies]
9+
opentelemetry = { path = "../../opentelemetry", features = ["logs"] }
10+
opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["logs"] }
11+
opentelemetry-stdout = { path = "../../opentelemetry-stdout", features = ["logs"]}
12+
opentelemetry-appender-log = { path = "../../opentelemetry-appender-log", default-features = false}
13+
opentelemetry-semantic-conventions = { path = "../../opentelemetry-semantic-conventions" }
14+
log = { workspace = true }
15+
serde_json = { workspace = true }

examples/logs-batch/README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# OpenTelemetry Log Appender for log - Example using Batch Log Processor and thread runtime
2+
3+
This example shows how to use the opentelemetry-appender-log crate, which is a
4+
[logging
5+
appender](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/glossary.md#log-appender--bridge)
6+
that bridges logs from the [log crate](https://docs.rs/log/latest/log/) to
7+
OpenTelemetry. The example setups a LoggerProvider with stdout exporter, so logs
8+
are emitted to stdout.
9+
10+
## Usage
11+
12+
Run the following, and Logs emitted using [log](https://docs.rs/log/latest/log/)
13+
will be written out to stdout.
14+
15+
```shell
16+
cargo run
17+
```

examples/logs-batch/src/main.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
use log::{error, Level};
2+
use opentelemetry::KeyValue;
3+
use opentelemetry_appender_log::OpenTelemetryLogBridge;
4+
use opentelemetry_sdk::logs::LoggerProvider;
5+
use opentelemetry_sdk::thread_runtime::CustomThreadRuntime;
6+
use opentelemetry_sdk::Resource;
7+
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;
8+
9+
fn main() {
10+
// Setup LoggerProvider with a stdout exporter
11+
let exporter = opentelemetry_stdout::LogExporter::default();
12+
let runtime = CustomThreadRuntime::new(2, 5); // 1 worker thread
13+
let logger_provider = LoggerProvider::builder()
14+
.with_resource(Resource::new([KeyValue::new(
15+
SERVICE_NAME,
16+
"logs-basic-example",
17+
)]))
18+
.with_batch_exporter(exporter, runtime)
19+
.build();
20+
21+
// Setup Log Appender for the log crate.
22+
let otel_log_appender = OpenTelemetryLogBridge::new(&logger_provider);
23+
log::set_boxed_logger(Box::new(otel_log_appender)).unwrap();
24+
log::set_max_level(Level::Error.to_level_filter());
25+
26+
// Emit logs using macros from the log crate.
27+
// These logs gets piped through OpenTelemetry bridge and gets exported to stdout.
28+
// 10 error events
29+
for i in 0..10000 {
30+
error!(target: "my-target", "hello from {}. My price is {} at itr {}", "apple", 2.99, i);
31+
//sleep 1 sec every 100 secs
32+
if i % 10 == 0 {
33+
std::thread::sleep(std::time::Duration::from_secs(1));
34+
}
35+
}
36+
println!("Flushing logs explicitly before exiting..");
37+
logger_provider.force_flush();
38+
}

opentelemetry-sdk/Cargo.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ tokio = { workspace = true, features = ["rt", "time"], optional = true }
2828
tokio-stream = { workspace = true, optional = true }
2929
http = { workspace = true, optional = true }
3030
tracing = {workspace = true, optional = true}
31+
async-compat = { version = "0.2"}
3132

3233
[package.metadata.docs.rs]
3334
all-features = true
@@ -36,6 +37,12 @@ rustdoc-args = ["--cfg", "docsrs"]
3637
[dev-dependencies]
3738
criterion = { workspace = true, features = ["html_reports"] }
3839
temp-env = { workspace = true }
40+
http = { workspace = true }
41+
http-body-util = { workspace = true }
42+
hyper = { workspace = true }
43+
hyper-util = { workspace = true, features = ["client-legacy", "http1", "http2"]}
44+
hyper-tls = "0.6"
45+
reqwest = {workspace = true, features = ["blocking"]}
3946

4047
[target.'cfg(not(target_os = "windows"))'.dev-dependencies]
4148
pprof = { version = "0.13", features = ["flamegraph", "criterion"] }

0 commit comments

Comments
 (0)