This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 3f8d94759 chore: reduce tracing deps (#7146)
3f8d94759 is described below
commit 3f8d947593b976e2c38526cf0ebca8a8db69cff9
Author: tison <[email protected]>
AuthorDate: Tue Jan 13 16:17:18 2026 +0800
chore: reduce tracing deps (#7146)
Signed-off-by: tison <[email protected]>
---
.github/workflows/docs.yml | 6 +--
core/Cargo.lock | 11 +++--
core/Cargo.toml | 8 ++--
core/benches/vs_s3/Cargo.toml | 2 +-
core/core/Cargo.toml | 5 +--
core/core/src/types/context/write.rs | 48 ++++++++--------------
.../Cargo.toml | 2 +-
.../src/main.rs | 23 ++++++-----
core/fuzz/Cargo.toml | 2 +-
core/layers/immutable-index/Cargo.toml | 5 +--
core/layers/immutable-index/src/lib.rs | 23 ++++++++---
core/layers/retry/Cargo.toml | 5 +--
core/layers/retry/src/lib.rs | 33 ++++++++-------
core/services/s3/Cargo.toml | 1 -
core/services/s3/src/backend.rs | 2 -
core/tests/behavior/main.rs | 14 ++++---
16 files changed, 93 insertions(+), 97 deletions(-)
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 750f72b9d..fb03aa5d4 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -39,7 +39,7 @@ concurrency:
env:
# This is the toolchain used by docs.rs
- #
+ #
# Check this page for updating: https://docs.rs/crate/opendal/0.54.1/builds
RUST_DOC_TOOLCHAIN: nightly-2025-10-12
# Enable cfg docsrs to make sure docs are built.
@@ -627,7 +627,7 @@ jobs:
OPENDAL_WEBSITE_NOT_LATEST: true
- name: Deploy to nightlies for tagged version
- uses:
burnett01/rsync-deployments@0c902521b8b9135f0dae7841a01d7d3b19629cb2
+ uses:
burnett01/rsync-deployments@0dc935cdecc5f5e571865e60d2a6cdc673704823
if: ${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref,
'rc') }}
with:
switches: -avzr
@@ -648,7 +648,7 @@ jobs:
OPENDAL_WEBSITE_BASE_URL: /opendal/opendal-docs-stable/
- name: Deploy to nightlies for stable version
- uses:
burnett01/rsync-deployments@0c902521b8b9135f0dae7841a01d7d3b19629cb2
+ uses:
burnett01/rsync-deployments@0dc935cdecc5f5e571865e60d2a6cdc673704823
if: ${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref,
'rc') }}
with:
switches: -avzr --delete
diff --git a/core/Cargo.lock b/core/Cargo.lock
index 7e6f78bcf..bd9e70adf 100644
--- a/core/Cargo.lock
+++ b/core/Cargo.lock
@@ -2784,9 +2784,9 @@ dependencies = [
name = "edge_test_aws_s3_assume_role_with_web_identity"
version = "0.55.0"
dependencies = [
+ "logforth",
"opendal",
"tokio",
- "tracing-subscriber",
"uuid",
]
@@ -5886,6 +5886,7 @@ dependencies = [
"http 1.4.0",
"libtest-mimic",
"log",
+ "logforth",
"opendal-core",
"opendal-layer-async-backtrace",
"opendal-layer-await-tree",
@@ -5979,7 +5980,6 @@ dependencies = [
"sha2",
"size",
"tokio",
- "tracing-subscriber",
"uuid",
]
@@ -6021,6 +6021,7 @@ dependencies = [
"http-body 1.0.1",
"jiff",
"log",
+ "logforth",
"md-5",
"mea 0.6.0",
"moka",
@@ -6033,7 +6034,6 @@ dependencies = [
"serde_json",
"sha2",
"tokio",
- "tracing-subscriber",
"url",
"uuid",
"web-time",
@@ -6181,9 +6181,9 @@ version = "0.55.0"
dependencies = [
"futures",
"log",
+ "logforth",
"opendal-core",
"tokio",
- "tracing-subscriber",
]
[[package]]
@@ -6269,11 +6269,11 @@ dependencies = [
"bytes",
"futures",
"log",
+ "logforth",
"opendal-core",
"opendal-layer-logging",
"opendal-layer-timeout",
"tokio",
- "tracing-subscriber",
]
[[package]]
@@ -6971,7 +6971,6 @@ dependencies = [
"serde",
"serde_json",
"tokio",
- "tracing-subscriber",
]
[[package]]
diff --git a/core/Cargo.toml b/core/Cargo.toml
index 57bdccf5b..9dbbc0c7a 100644
--- a/core/Cargo.toml
+++ b/core/Cargo.toml
@@ -46,7 +46,8 @@ bytes = "1.10"
ctor = "0.6"
futures = { version = "0.3", default-features = false }
http = "1.1"
-log = "0.4"
+log = { version = "0.4.29" }
+logforth = { version = "0.29.1", features = ["starter-log"] }
mea = "0.6"
quick-xml = { version = "0.38", default-features = false }
rand = "0.8"
@@ -306,13 +307,10 @@ futures = { workspace = true, default-features = true }
http = { workspace = true }
libtest-mimic = "0.8"
log = { workspace = true }
+logforth = { workspace = true }
rand = { workspace = true }
reqwest = "0.12.24"
sha2 = { workspace = true }
size = "0.5"
tokio = { workspace = true, features = ["fs", "macros", "rt-multi-thread"] }
-tracing-subscriber = { version = "0.3", features = [
- "env-filter",
- "tracing-log",
-] }
uuid = { workspace = true, features = ["serde", "v4"] }
diff --git a/core/benches/vs_s3/Cargo.toml b/core/benches/vs_s3/Cargo.toml
index 1912d005c..e83857794 100644
--- a/core/benches/vs_s3/Cargo.toml
+++ b/core/benches/vs_s3/Cargo.toml
@@ -32,7 +32,7 @@ aws-credential-types = { version = "1.2.8", features = [
aws-sdk-s3 = "1.91.0"
criterion = { version = "0.7", features = ["async", "async_tokio"] }
dotenvy = "0.15"
-logforth = { version = "0.29.1", features = ["starter-log"] }
+logforth = { workspace = true }
opendal = { path = "../..", features = ["tests"] }
rand = { workspace = true }
tokio = { workspace = true, features = ["full"] }
diff --git a/core/core/Cargo.toml b/core/core/Cargo.toml
index f16a45efb..c97c8eea2 100644
--- a/core/core/Cargo.toml
+++ b/core/core/Cargo.toml
@@ -94,11 +94,8 @@ uuid = { workspace = true, features = ["serde", "v4", "js"] }
web-time = { version = "1.1.0" }
[dev-dependencies]
+logforth = { workspace = true }
pretty_assertions = "1"
rand = { workspace = true }
sha2 = { workspace = true }
tokio = { workspace = true, features = ["fs", "macros", "rt-multi-thread"] }
-tracing-subscriber = { version = "0.3", features = [
- "env-filter",
- "tracing-log",
-] }
diff --git a/core/core/src/types/context/write.rs
b/core/core/src/types/context/write.rs
index 11a8551dd..f965eaae0 100644
--- a/core/core/src/types/context/write.rs
+++ b/core/core/src/types/context/write.rs
@@ -210,6 +210,9 @@ mod tests {
use bytes::BufMut;
use bytes::Bytes;
use log::debug;
+ use logforth::append::Testing;
+ use logforth::filter::env_filter::EnvFilterBuilder;
+ use logforth::layout::TextLayout;
use mea::mutex::Mutex;
use pretty_assertions::assert_eq;
use rand::Rng;
@@ -248,13 +251,18 @@ mod tests {
}
}
+ fn setup() {
+ let _ = logforth::starter_log::builder()
+ .dispatch(|d| {
+ d.filter(EnvFilterBuilder::from_default_env().build())
+
.append(Testing::default().with_layout(TextLayout::default()))
+ })
+ .try_apply();
+ }
+
#[tokio::test]
async fn test_exact_buf_writer_short_write() -> Result<()> {
- let _ = tracing_subscriber::fmt()
- .pretty()
- .with_test_writer()
- .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
- .try_init();
+ setup();
let mut rng = thread_rng();
let mut expected = vec![0; 5];
@@ -289,11 +297,7 @@ mod tests {
#[tokio::test]
async fn test_inexact_buf_writer_large_write() -> Result<()> {
- let _ = tracing_subscriber::fmt()
- .pretty()
- .with_test_writer()
- .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
- .try_init();
+ setup();
let buf = Arc::new(Mutex::new(vec![]));
let mut w = WriteGenerator::new(
@@ -327,11 +331,7 @@ mod tests {
#[tokio::test]
async fn test_inexact_buf_writer_combine_small() -> Result<()> {
- let _ = tracing_subscriber::fmt()
- .pretty()
- .with_test_writer()
- .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
- .try_init();
+ setup();
let buf = Arc::new(Mutex::new(vec![]));
let mut w = WriteGenerator::new(
@@ -377,11 +377,7 @@ mod tests {
#[tokio::test]
async fn test_inexact_buf_writer_queue_remaining() -> Result<()> {
- let _ = tracing_subscriber::fmt()
- .pretty()
- .with_test_writer()
- .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
- .try_init();
+ setup();
let buf = Arc::new(Mutex::new(vec![]));
let mut w = WriteGenerator::new(
@@ -429,11 +425,7 @@ mod tests {
#[tokio::test]
async fn test_fuzz_exact_buf_writer() -> Result<()> {
- let _ = tracing_subscriber::fmt()
- .pretty()
- .with_test_writer()
- .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
- .try_init();
+ setup();
let mut rng = thread_rng();
let mut expected = vec![];
@@ -482,11 +474,7 @@ mod tests {
/// everything at once.
#[tokio::test]
async fn test_exact_buf_writer_large_buffer_splits_into_chunks() ->
Result<()> {
- let _ = tracing_subscriber::fmt()
- .pretty()
- .with_test_writer()
- .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
- .try_init();
+ setup();
let chunk_size = 10;
let large_buffer_size = 25; // 2.5x chunk_size
diff --git a/core/edge/s3_aws_assume_role_with_web_identity/Cargo.toml
b/core/edge/s3_aws_assume_role_with_web_identity/Cargo.toml
index a9f6a9702..d90a2520d 100644
--- a/core/edge/s3_aws_assume_role_with_web_identity/Cargo.toml
+++ b/core/edge/s3_aws_assume_role_with_web_identity/Cargo.toml
@@ -25,7 +25,7 @@ rust-version.workspace = true
version.workspace = true
[dependencies]
+logforth = { workspace = true }
opendal = { path = "../..", features = ["tests", "services-s3"] }
tokio = { workspace = true, features = ["full"] }
-tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
uuid = { workspace = true, features = ["serde", "v4"] }
diff --git a/core/edge/s3_aws_assume_role_with_web_identity/src/main.rs
b/core/edge/s3_aws_assume_role_with_web_identity/src/main.rs
index 0a0982583..8704d3dee 100644
--- a/core/edge/s3_aws_assume_role_with_web_identity/src/main.rs
+++ b/core/edge/s3_aws_assume_role_with_web_identity/src/main.rs
@@ -15,18 +15,23 @@
// specific language governing permissions and limitations
// under the License.
-use opendal::Result;
+use logforth::append::Testing;
+use logforth::filter::env_filter::EnvFilterBuilder;
+use logforth::layout::TextLayout;
use opendal::tests::init_test_service;
#[tokio::main]
-async fn main() -> Result<()> {
- let _ = tracing_subscriber::fmt()
- .pretty()
- .with_test_writer()
- .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
- .try_init();
+async fn main() {
+ let _ = logforth::starter_log::builder()
+ .dispatch(|d| {
+ d.filter(EnvFilterBuilder::from_default_env().build())
+ .append(Testing::default().with_layout(TextLayout::default()))
+ })
+ .try_apply();
- let op = init_test_service()?.expect("service must be init");
+ let op = init_test_service()
+ .unwrap_or_else(|err| panic!("failed to init test service: {:?}", err))
+ .expect("service must be init");
assert_eq!(op.info().scheme(), opendal::services::S3_SCHEME);
let result = op
@@ -34,6 +39,4 @@ async fn main() -> Result<()> {
.await
.expect("this operation should never return error");
assert!(!result, "the file must be not exist");
-
- Ok(())
}
diff --git a/core/fuzz/Cargo.toml b/core/fuzz/Cargo.toml
index fd353dcd8..46fdfddc0 100644
--- a/core/fuzz/Cargo.toml
+++ b/core/fuzz/Cargo.toml
@@ -83,7 +83,7 @@ services-webhdfs = ["opendal/services-webhdfs"]
arbitrary = { version = "1.4.2", features = ["derive"] }
libfuzzer-sys = "0.4"
log = { workspace = true }
-logforth = { version = "0.29.1", features = ["starter-log"] }
+logforth = { workspace = true }
opendal = { path = "..", features = ["tests"] }
uuid = { workspace = true, features = ["v4"] }
diff --git a/core/layers/immutable-index/Cargo.toml
b/core/layers/immutable-index/Cargo.toml
index c3067d369..5b359c3c7 100644
--- a/core/layers/immutable-index/Cargo.toml
+++ b/core/layers/immutable-index/Cargo.toml
@@ -36,9 +36,6 @@ opendal-core = { path = "../../core", version = "0.55.0",
default-features = fal
[dev-dependencies]
futures = { workspace = true }
log = { workspace = true }
+logforth = { workspace = true }
opendal-core = { path = "../../core", version = "0.55.0" }
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
-tracing-subscriber = { version = "0.3", features = [
- "env-filter",
- "tracing-log",
-] }
diff --git a/core/layers/immutable-index/src/lib.rs
b/core/layers/immutable-index/src/lib.rs
index aae2df6fe..6b633b40f 100644
--- a/core/layers/immutable-index/src/lib.rs
+++ b/core/layers/immutable-index/src/lib.rs
@@ -228,10 +228,12 @@ mod tests {
use std::collections::HashMap;
use std::sync::Arc;
+ use super::*;
use futures::TryStreamExt;
use log::debug;
-
- use super::*;
+ use logforth::append::Testing;
+ use logforth::filter::env_filter::EnvFilterBuilder;
+ use logforth::layout::TextLayout;
#[derive(Debug)]
struct MockService;
@@ -253,9 +255,18 @@ mod tests {
Operator::from_inner(Arc::new(MockService)).layer(layer)
}
+ fn setup() {
+ let _ = logforth::starter_log::builder()
+ .dispatch(|d| {
+ d.filter(EnvFilterBuilder::from_default_env().build())
+
.append(Testing::default().with_layout(TextLayout::default()))
+ })
+ .try_apply();
+ }
+
#[tokio::test]
async fn test_list() -> Result<()> {
- let _ = tracing_subscriber::fmt().with_test_writer().try_init();
+ setup();
let mut iil = ImmutableIndexLayer::default();
for i in ["file", "dir/", "dir/file", "dir_without_prefix/file"] {
@@ -285,7 +296,7 @@ mod tests {
#[tokio::test]
async fn test_scan() -> Result<()> {
- let _ = tracing_subscriber::fmt().with_test_writer().try_init();
+ setup();
let mut iil = ImmutableIndexLayer::default();
for i in ["file", "dir/", "dir/file", "dir_without_prefix/file"] {
@@ -317,7 +328,7 @@ mod tests {
#[tokio::test]
async fn test_list_dir() -> Result<()> {
- let _ = tracing_subscriber::fmt().with_test_writer().try_init();
+ setup();
let mut iil = ImmutableIndexLayer::default();
for i in [
@@ -367,7 +378,7 @@ mod tests {
#[tokio::test]
async fn test_walk_top_down_dir() -> Result<()> {
- let _ = tracing_subscriber::fmt().with_test_writer().try_init();
+ setup();
let mut iil = ImmutableIndexLayer::default();
for i in [
diff --git a/core/layers/retry/Cargo.toml b/core/layers/retry/Cargo.toml
index dffaafade..dee0274ed 100644
--- a/core/layers/retry/Cargo.toml
+++ b/core/layers/retry/Cargo.toml
@@ -38,11 +38,8 @@ opendal-core = { path = "../../core", version = "0.55.0",
default-features = fal
[dev-dependencies]
bytes = { workspace = true }
futures = { workspace = true }
+logforth = { workspace = true }
opendal-core = { path = "../../core", version = "0.55.0" }
opendal-layer-logging = { path = "../logging", version = "0.55.0" }
opendal-layer-timeout = { path = "../timeout", version = "0.55.0" }
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
-tracing-subscriber = { version = "0.3", features = [
- "env-filter",
- "tracing-log",
-] }
diff --git a/core/layers/retry/src/lib.rs b/core/layers/retry/src/lib.rs
index 4ffeafc2f..edca6fb29 100644
--- a/core/layers/retry/src/lib.rs
+++ b/core/layers/retry/src/lib.rs
@@ -25,7 +25,6 @@ use std::sync::Arc;
use backon::ExponentialBuilder;
use backon::Retryable;
-use log::warn;
use opendal_core::raw::*;
use opendal_core::*;
@@ -255,10 +254,11 @@ pub struct DefaultRetryInterceptor;
impl RetryInterceptor for DefaultRetryInterceptor {
fn intercept(&self, err: &Error, dur: Duration) {
- warn!(
+ log::warn!(
target: "opendal::layers::retry",
"will retry after {}s because: {}",
- dur.as_secs_f64(), err)
+ dur.as_secs_f64(), err
+ );
}
}
@@ -613,8 +613,10 @@ mod tests {
use bytes::Bytes;
use futures::TryStreamExt;
use futures::stream;
+ use logforth::append::Testing;
+ use logforth::filter::env_filter::EnvFilterBuilder;
+ use logforth::layout::TextLayout;
use opendal_layer_logging::LoggingLayer;
- use tracing_subscriber::filter::LevelFilter;
use super::*;
@@ -835,12 +837,18 @@ mod tests {
}
}
+ fn setup() {
+ let _ = logforth::starter_log::builder()
+ .dispatch(|d| {
+ d.filter(EnvFilterBuilder::from_default_env().build())
+
.append(Testing::default().with_layout(TextLayout::default()))
+ })
+ .try_apply();
+ }
+
#[tokio::test]
async fn test_retry_read() -> Result<()> {
- let _ = tracing_subscriber::fmt()
- .with_max_level(LevelFilter::TRACE)
- .with_test_writer()
- .try_init();
+ setup();
let builder = MockBuilder::default();
let op = Operator::new(builder.clone())?
@@ -864,10 +872,7 @@ mod tests {
/// This test is used to reproduce the panic issue while composing retry
layer with timeout layer.
#[tokio::test]
async fn test_retry_write_fail_on_close() -> Result<()> {
- let _ = tracing_subscriber::fmt()
- .with_max_level(LevelFilter::TRACE)
- .with_test_writer()
- .try_init();
+ setup();
let builder = MockBuilder::default();
let op = Operator::new(builder.clone())?
@@ -896,7 +901,7 @@ mod tests {
#[tokio::test]
async fn test_retry_list() -> Result<()> {
- let _ = tracing_subscriber::fmt().with_test_writer().try_init();
+ setup();
let builder = MockBuilder::default();
let op = Operator::new(builder.clone())?
@@ -920,7 +925,7 @@ mod tests {
#[tokio::test]
async fn test_retry_batch() -> Result<()> {
- let _ = tracing_subscriber::fmt().with_test_writer().try_init();
+ setup();
let builder = MockBuilder::default();
// set to a lower delay to make it run faster
diff --git a/core/services/s3/Cargo.toml b/core/services/s3/Cargo.toml
index f13928ab1..87bae334a 100644
--- a/core/services/s3/Cargo.toml
+++ b/core/services/s3/Cargo.toml
@@ -52,4 +52,3 @@ serde = { workspace = true, features = ["derive"] }
pretty_assertions = "1"
serde_json = { workspace = true }
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
-tracing-subscriber = "0.3"
diff --git a/core/services/s3/src/backend.rs b/core/services/s3/src/backend.rs
index 99456d94d..d3ae6aa76 100644
--- a/core/services/s3/src/backend.rs
+++ b/core/services/s3/src/backend.rs
@@ -1146,8 +1146,6 @@ mod tests {
#[test]
fn test_build_endpoint() {
- let _ = tracing_subscriber::fmt().with_test_writer().try_init();
-
let endpoint_cases = vec![
Some("s3.amazonaws.com"),
Some("https://s3.amazonaws.com"),
diff --git a/core/tests/behavior/main.rs b/core/tests/behavior/main.rs
index fd31fa2dc..59790622f 100644
--- a/core/tests/behavior/main.rs
+++ b/core/tests/behavior/main.rs
@@ -34,6 +34,9 @@ mod async_write;
// External dependencies
use libtest_mimic::Arguments;
use libtest_mimic::Trial;
+use logforth::append::Testing;
+use logforth::filter::env_filter::EnvFilterBuilder;
+use logforth::layout::TextLayout;
use opendal::tests::TEST_RUNTIME;
use opendal::tests::init_test_service;
use opendal::*;
@@ -63,11 +66,12 @@ fn main() -> anyhow::Result<()> {
// Don't init logging while building operator which may break cargo
// nextest output
- let _ = tracing_subscriber::fmt()
- .pretty()
- .with_test_writer()
- .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
- .try_init();
+ let _ = logforth::starter_log::builder()
+ .dispatch(|d| {
+ d.filter(EnvFilterBuilder::from_default_env().build())
+ .append(Testing::default().with_layout(TextLayout::default()))
+ })
+ .try_apply();
let conclusion = libtest_mimic::run(&args, tests);