| @@ -1512,6 +1512,7 @@ dependencies = [ | |||||
| "dora-coordinator", | "dora-coordinator", | ||||
| "dora-core", | "dora-core", | ||||
| "dora-daemon", | "dora-daemon", | ||||
| "dora-tracing", | |||||
| "dunce", | "dunce", | ||||
| "eyre", | "eyre", | ||||
| "futures", | "futures", | ||||
| @@ -84,6 +84,7 @@ tokio = "1.24.2" | |||||
| dora-daemon = { workspace = true } | dora-daemon = { workspace = true } | ||||
| dora-coordinator = { workspace = true } | dora-coordinator = { workspace = true } | ||||
| dora-core = { workspace = true } | dora-core = { workspace = true } | ||||
| dora-tracing = { workspace = true } | |||||
| dunce = "1.0.2" | dunce = "1.0.2" | ||||
| serde_yaml = "0.8.23" | serde_yaml = "0.8.23" | ||||
| uuid = { version = "1.2.1", features = ["v4", "serde"] } | uuid = { version = "1.2.1", features = ["v4", "serde"] } | ||||
| @@ -1,7 +1,6 @@ | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{bail, Context}; | use eyre::{bail, Context}; | ||||
| use std::path::Path; | use std::path::Path; | ||||
| use tracing::metadata::LevelFilter; | |||||
| use tracing_subscriber::Layer; | |||||
| #[derive(Debug, Clone, clap::Parser)] | #[derive(Debug, Clone, clap::Parser)] | ||||
| pub struct Args { | pub struct Args { | ||||
| @@ -17,7 +16,7 @@ async fn main() -> eyre::Result<()> { | |||||
| return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | ||||
| } | } | ||||
| set_up_tracing().wrap_err("failed to set up tracing subscriber")?; | |||||
| set_up_tracing("benchmark-runner").wrap_err("failed to set up tracing subscriber")?; | |||||
| let root = Path::new(env!("CARGO_MANIFEST_DIR")); | let root = Path::new(env!("CARGO_MANIFEST_DIR")); | ||||
| std::env::set_current_dir(root.join(file!()).parent().unwrap()) | std::env::set_current_dir(root.join(file!()).parent().unwrap()) | ||||
| @@ -42,14 +41,3 @@ async fn build_dataflow(dataflow: &Path) -> eyre::Result<()> { | |||||
| }; | }; | ||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| fn set_up_tracing() -> eyre::Result<()> { | |||||
| use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(LevelFilter::DEBUG); | |||||
| let subscriber = tracing_subscriber::Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(subscriber) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -1,10 +1,9 @@ | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{bail, Context}; | use eyre::{bail, Context}; | ||||
| use std::{ | use std::{ | ||||
| env::consts::{DLL_PREFIX, DLL_SUFFIX, EXE_SUFFIX}, | env::consts::{DLL_PREFIX, DLL_SUFFIX, EXE_SUFFIX}, | ||||
| path::Path, | path::Path, | ||||
| }; | }; | ||||
| use tracing::metadata::LevelFilter; | |||||
| use tracing_subscriber::Layer; | |||||
| #[derive(Debug, Clone, clap::Parser)] | #[derive(Debug, Clone, clap::Parser)] | ||||
| pub struct Args { | pub struct Args { | ||||
| @@ -19,7 +18,7 @@ async fn main() -> eyre::Result<()> { | |||||
| if run_dora_runtime { | if run_dora_runtime { | ||||
| return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | ||||
| } | } | ||||
| set_up_tracing().wrap_err("failed to set up tracing")?; | |||||
| set_up_tracing("c++-dataflow-runner").wrap_err("failed to set up tracing")?; | |||||
| if cfg!(windows) { | if cfg!(windows) { | ||||
| tracing::error!( | tracing::error!( | ||||
| @@ -294,14 +293,3 @@ async fn build_cxx_operator( | |||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| fn set_up_tracing() -> eyre::Result<()> { | |||||
| use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(LevelFilter::DEBUG); | |||||
| let subscriber = tracing_subscriber::Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(subscriber) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -1,10 +1,9 @@ | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{bail, Context}; | use eyre::{bail, Context}; | ||||
| use std::{ | use std::{ | ||||
| env::consts::{DLL_PREFIX, DLL_SUFFIX, EXE_SUFFIX}, | env::consts::{DLL_PREFIX, DLL_SUFFIX, EXE_SUFFIX}, | ||||
| path::Path, | path::Path, | ||||
| }; | }; | ||||
| use tracing::metadata::LevelFilter; | |||||
| use tracing_subscriber::Layer; | |||||
| #[derive(Debug, Clone, clap::Parser)] | #[derive(Debug, Clone, clap::Parser)] | ||||
| pub struct Args { | pub struct Args { | ||||
| @@ -20,7 +19,7 @@ async fn main() -> eyre::Result<()> { | |||||
| return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | ||||
| } | } | ||||
| set_up_tracing().wrap_err("failed to set up tracing")?; | |||||
| set_up_tracing("c-dataflow-runner").wrap_err("failed to set up tracing")?; | |||||
| let root = Path::new(env!("CARGO_MANIFEST_DIR")); | let root = Path::new(env!("CARGO_MANIFEST_DIR")); | ||||
| std::env::set_current_dir(root.join(file!()).parent().unwrap()) | std::env::set_current_dir(root.join(file!()).parent().unwrap()) | ||||
| @@ -182,14 +181,3 @@ async fn build_c_operator(root: &Path) -> eyre::Result<()> { | |||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| fn set_up_tracing() -> eyre::Result<()> { | |||||
| use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(LevelFilter::DEBUG); | |||||
| let subscriber = tracing_subscriber::Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(subscriber) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -1,7 +1,6 @@ | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{bail, Context}; | use eyre::{bail, Context}; | ||||
| use std::path::Path; | use std::path::Path; | ||||
| use tracing::metadata::LevelFilter; | |||||
| use tracing_subscriber::Layer; | |||||
| #[derive(Debug, Clone, clap::Parser)] | #[derive(Debug, Clone, clap::Parser)] | ||||
| pub struct Args { | pub struct Args { | ||||
| @@ -16,7 +15,7 @@ async fn main() -> eyre::Result<()> { | |||||
| if run_dora_runtime { | if run_dora_runtime { | ||||
| return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | ||||
| } | } | ||||
| set_up_tracing().wrap_err("failed to set up tracing")?; | |||||
| set_up_tracing("cmake-dataflow-runner").wrap_err("failed to set up tracing")?; | |||||
| if cfg!(windows) { | if cfg!(windows) { | ||||
| tracing::error!( | tracing::error!( | ||||
| @@ -67,14 +66,3 @@ async fn build_package(package: &str) -> eyre::Result<()> { | |||||
| } | } | ||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| fn set_up_tracing() -> eyre::Result<()> { | |||||
| use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(LevelFilter::DEBUG); | |||||
| let subscriber = tracing_subscriber::Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(subscriber) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -3,6 +3,7 @@ use dora_core::{ | |||||
| descriptor::Descriptor, | descriptor::Descriptor, | ||||
| topics::{ControlRequest, ControlRequestReply, DataflowId}, | topics::{ControlRequest, ControlRequestReply, DataflowId}, | ||||
| }; | }; | ||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{bail, Context}; | use eyre::{bail, Context}; | ||||
| use futures::stream; | use futures::stream; | ||||
| use std::{ | use std::{ | ||||
| @@ -19,8 +20,6 @@ use tokio::{ | |||||
| task::JoinSet, | task::JoinSet, | ||||
| }; | }; | ||||
| use tokio_stream::wrappers::ReceiverStream; | use tokio_stream::wrappers::ReceiverStream; | ||||
| use tracing::metadata::LevelFilter; | |||||
| use tracing_subscriber::Layer; | |||||
| use uuid::Uuid; | use uuid::Uuid; | ||||
| #[derive(Debug, Clone, clap::Parser)] | #[derive(Debug, Clone, clap::Parser)] | ||||
| @@ -36,7 +35,7 @@ async fn main() -> eyre::Result<()> { | |||||
| return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | ||||
| } | } | ||||
| set_up_tracing().wrap_err("failed to set up tracing subscriber")?; | |||||
| set_up_tracing("multiple-daemon-runner").wrap_err("failed to set up tracing subscriber")?; | |||||
| let root = Path::new(env!("CARGO_MANIFEST_DIR")); | let root = Path::new(env!("CARGO_MANIFEST_DIR")); | ||||
| std::env::set_current_dir(root.join(file!()).parent().unwrap()) | std::env::set_current_dir(root.join(file!()).parent().unwrap()) | ||||
| @@ -211,14 +210,3 @@ async fn build_dataflow(dataflow: &Path) -> eyre::Result<()> { | |||||
| }; | }; | ||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| fn set_up_tracing() -> eyre::Result<()> { | |||||
| use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(LevelFilter::TRACE); | |||||
| let subscriber = tracing_subscriber::Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(subscriber) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -1,15 +1,10 @@ | |||||
| use dora_core::get_python_path; | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{ContextCompat, WrapErr}; | use eyre::{ContextCompat, WrapErr}; | ||||
| use std::path::Path; | use std::path::Path; | ||||
| use tracing_subscriber::{ | |||||
| filter::{FilterExt, LevelFilter}, | |||||
| prelude::*, | |||||
| EnvFilter, Registry, | |||||
| }; | |||||
| #[tokio::main] | #[tokio::main] | ||||
| async fn main() -> eyre::Result<()> { | async fn main() -> eyre::Result<()> { | ||||
| set_up_tracing()?; | |||||
| set_up_tracing("python-dataflow-runner")?; | |||||
| let root = Path::new(env!("CARGO_MANIFEST_DIR")); | let root = Path::new(env!("CARGO_MANIFEST_DIR")); | ||||
| std::env::set_current_dir(root.join(file!()).parent().unwrap()) | std::env::set_current_dir(root.join(file!()).parent().unwrap()) | ||||
| @@ -63,29 +58,3 @@ async fn main() -> eyre::Result<()> { | |||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| async fn run(cmd: &[&str], pwd: Option<&Path>) -> eyre::Result<()> { | |||||
| let mut run = tokio::process::Command::new(cmd[0]); | |||||
| run.args(&cmd[1..]); | |||||
| if let Some(pwd) = pwd { | |||||
| run.current_dir(pwd); | |||||
| } | |||||
| if !run.status().await?.success() { | |||||
| eyre::bail!("failed to run {cmd:?}"); | |||||
| }; | |||||
| Ok(()) | |||||
| } | |||||
| pub fn set_up_tracing() -> eyre::Result<()> { | |||||
| // Filter log using `RUST_LOG`. More useful for CLI. | |||||
| let filter = EnvFilter::from_default_env().or(LevelFilter::DEBUG); | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(filter); | |||||
| let registry = Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(registry) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -1,15 +1,10 @@ | |||||
| use dora_core::get_python_path; | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{ContextCompat, WrapErr}; | use eyre::{ContextCompat, WrapErr}; | ||||
| use std::path::Path; | use std::path::Path; | ||||
| use tracing_subscriber::{ | |||||
| filter::{FilterExt, LevelFilter}, | |||||
| prelude::*, | |||||
| EnvFilter, Registry, | |||||
| }; | |||||
| #[tokio::main] | #[tokio::main] | ||||
| async fn main() -> eyre::Result<()> { | async fn main() -> eyre::Result<()> { | ||||
| set_up_tracing()?; | |||||
| set_up_tracing("python-operator-dataflow-runner")?; | |||||
| let root = Path::new(env!("CARGO_MANIFEST_DIR")); | let root = Path::new(env!("CARGO_MANIFEST_DIR")); | ||||
| std::env::set_current_dir(root.join(file!()).parent().unwrap()) | std::env::set_current_dir(root.join(file!()).parent().unwrap()) | ||||
| @@ -63,29 +58,3 @@ async fn main() -> eyre::Result<()> { | |||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| async fn run(cmd: &[&str], pwd: Option<&Path>) -> eyre::Result<()> { | |||||
| let mut run = tokio::process::Command::new(cmd[0]); | |||||
| run.args(&cmd[1..]); | |||||
| if let Some(pwd) = pwd { | |||||
| run.current_dir(pwd); | |||||
| } | |||||
| if !run.status().await?.success() { | |||||
| eyre::bail!("failed to run {cmd:?}"); | |||||
| }; | |||||
| Ok(()) | |||||
| } | |||||
| pub fn set_up_tracing() -> eyre::Result<()> { | |||||
| // Filter log using `RUST_LOG`. More useful for CLI. | |||||
| let filter = EnvFilter::from_default_env().or(LevelFilter::DEBUG); | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(filter); | |||||
| let registry = Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(registry) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -1,15 +1,10 @@ | |||||
| use dora_core::get_python_path; | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{ContextCompat, WrapErr}; | use eyre::{ContextCompat, WrapErr}; | ||||
| use std::path::Path; | use std::path::Path; | ||||
| use tracing_subscriber::{ | |||||
| filter::{FilterExt, LevelFilter}, | |||||
| prelude::*, | |||||
| EnvFilter, Registry, | |||||
| }; | |||||
| #[tokio::main] | #[tokio::main] | ||||
| async fn main() -> eyre::Result<()> { | async fn main() -> eyre::Result<()> { | ||||
| set_up_tracing()?; | |||||
| set_up_tracing("python-ros2-dataflow-runner")?; | |||||
| let root = Path::new(env!("CARGO_MANIFEST_DIR")); | let root = Path::new(env!("CARGO_MANIFEST_DIR")); | ||||
| std::env::set_current_dir(root.join(file!()).parent().unwrap()) | std::env::set_current_dir(root.join(file!()).parent().unwrap()) | ||||
| @@ -65,29 +60,3 @@ async fn main() -> eyre::Result<()> { | |||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| async fn run(cmd: &[&str], pwd: Option<&Path>) -> eyre::Result<()> { | |||||
| let mut run = tokio::process::Command::new(cmd[0]); | |||||
| run.args(&cmd[1..]); | |||||
| if let Some(pwd) = pwd { | |||||
| run.current_dir(pwd); | |||||
| } | |||||
| if !run.status().await?.success() { | |||||
| eyre::bail!("failed to run {cmd:?}"); | |||||
| }; | |||||
| Ok(()) | |||||
| } | |||||
| pub fn set_up_tracing() -> eyre::Result<()> { | |||||
| // Filter log using `RUST_LOG`. More useful for CLI. | |||||
| let filter = EnvFilter::from_default_env().or(LevelFilter::DEBUG); | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(filter); | |||||
| let registry = Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(registry) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -1,7 +1,6 @@ | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{bail, Context}; | use eyre::{bail, Context}; | ||||
| use std::path::Path; | use std::path::Path; | ||||
| use tracing::metadata::LevelFilter; | |||||
| use tracing_subscriber::Layer; | |||||
| #[derive(Debug, Clone, clap::Parser)] | #[derive(Debug, Clone, clap::Parser)] | ||||
| pub struct Args { | pub struct Args { | ||||
| @@ -16,7 +15,7 @@ async fn main() -> eyre::Result<()> { | |||||
| return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | ||||
| } | } | ||||
| set_up_tracing().wrap_err("failed to set up tracing")?; | |||||
| set_up_tracing("rust-dataflow-url-runner").wrap_err("failed to set up tracing")?; | |||||
| let root = Path::new(env!("CARGO_MANIFEST_DIR")); | let root = Path::new(env!("CARGO_MANIFEST_DIR")); | ||||
| std::env::set_current_dir(root.join(file!()).parent().unwrap()) | std::env::set_current_dir(root.join(file!()).parent().unwrap()) | ||||
| @@ -41,14 +40,3 @@ async fn build_dataflow(dataflow: &Path) -> eyre::Result<()> { | |||||
| }; | }; | ||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| fn set_up_tracing() -> eyre::Result<()> { | |||||
| use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(LevelFilter::DEBUG); | |||||
| let subscriber = tracing_subscriber::Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(subscriber) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -1,7 +1,6 @@ | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{bail, Context}; | use eyre::{bail, Context}; | ||||
| use std::path::Path; | use std::path::Path; | ||||
| use tracing::metadata::LevelFilter; | |||||
| use tracing_subscriber::Layer; | |||||
| #[derive(Debug, Clone, clap::Parser)] | #[derive(Debug, Clone, clap::Parser)] | ||||
| pub struct Args { | pub struct Args { | ||||
| @@ -17,7 +16,7 @@ async fn main() -> eyre::Result<()> { | |||||
| return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | ||||
| } | } | ||||
| set_up_tracing().wrap_err("failed to set up tracing subscriber")?; | |||||
| set_up_tracing("rust-dataflow-runner").wrap_err("failed to set up tracing subscriber")?; | |||||
| let root = Path::new(env!("CARGO_MANIFEST_DIR")); | let root = Path::new(env!("CARGO_MANIFEST_DIR")); | ||||
| std::env::set_current_dir(root.join(file!()).parent().unwrap()) | std::env::set_current_dir(root.join(file!()).parent().unwrap()) | ||||
| @@ -42,14 +41,3 @@ async fn build_dataflow(dataflow: &Path) -> eyre::Result<()> { | |||||
| }; | }; | ||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| fn set_up_tracing() -> eyre::Result<()> { | |||||
| use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(LevelFilter::DEBUG); | |||||
| let subscriber = tracing_subscriber::Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(subscriber) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||
| @@ -1,7 +1,6 @@ | |||||
| use dora_tracing::set_up_tracing; | |||||
| use eyre::{bail, Context}; | use eyre::{bail, Context}; | ||||
| use std::path::Path; | use std::path::Path; | ||||
| use tracing::metadata::LevelFilter; | |||||
| use tracing_subscriber::Layer; | |||||
| #[derive(Debug, Clone, clap::Parser)] | #[derive(Debug, Clone, clap::Parser)] | ||||
| pub struct Args { | pub struct Args { | ||||
| @@ -17,7 +16,7 @@ async fn main() -> eyre::Result<()> { | |||||
| return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | return tokio::task::block_in_place(dora_daemon::run_dora_runtime); | ||||
| } | } | ||||
| set_up_tracing().wrap_err("failed to set up tracing subscriber")?; | |||||
| set_up_tracing("rust-ros2-dataflow-runner").wrap_err("failed to set up tracing subscriber")?; | |||||
| let root = Path::new(env!("CARGO_MANIFEST_DIR")); | let root = Path::new(env!("CARGO_MANIFEST_DIR")); | ||||
| std::env::set_current_dir(root.join(file!()).parent().unwrap()) | std::env::set_current_dir(root.join(file!()).parent().unwrap()) | ||||
| @@ -42,14 +41,3 @@ async fn build_dataflow(dataflow: &Path) -> eyre::Result<()> { | |||||
| }; | }; | ||||
| Ok(()) | Ok(()) | ||||
| } | } | ||||
| fn set_up_tracing() -> eyre::Result<()> { | |||||
| use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; | |||||
| let stdout_log = tracing_subscriber::fmt::layer() | |||||
| .pretty() | |||||
| .with_filter(LevelFilter::DEBUG); | |||||
| let subscriber = tracing_subscriber::Registry::default().with(stdout_log); | |||||
| tracing::subscriber::set_global_default(subscriber) | |||||
| .context("failed to set tracing global subscriber") | |||||
| } | |||||