From 938e5eb0339cc2c94446da882e34e3d98bfa3c01 Mon Sep 17 00:00:00 2001 From: raftedproc <71657594+raftedproc@users.noreply.github.com> Date: Wed, 8 Nov 2023 15:00:56 +0300 Subject: [PATCH] fix(air-interpreter): enable multiple invoke_tracing calls for air-interpreter (#753) --- air-interpreter/src/logger.rs | 16 ++-------------- air-interpreter/src/marine.rs | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/air-interpreter/src/logger.rs b/air-interpreter/src/logger.rs index 9870b1b5..3ba4be7e 100644 --- a/air-interpreter/src/logger.rs +++ b/air-interpreter/src/logger.rs @@ -32,18 +32,6 @@ pub fn init_logger(default_level: Option) { } #[allow(dead_code)] -// TODO it worth moving it to marine_rs_sdk -pub fn init_tracing(tracing_params: String, trace_mode: u8) { - use tracing_subscriber::fmt::format::FmtSpan; - - let builder = tracing_subscriber::fmt() - .with_env_filter(tracing_params) - .with_span_events(FmtSpan::ENTER | FmtSpan::CLOSE) - .with_writer(std::io::stderr); - if trace_mode == 0 { - builder.json().init(); - } else { - // Human-readable output. - builder.init(); - } +pub fn json_output_mode(trace_mode: u8) -> bool { + trace_mode == 0 } diff --git a/air-interpreter/src/marine.rs b/air-interpreter/src/marine.rs index b4c60d0e..f11b110b 100644 --- a/air-interpreter/src/marine.rs +++ b/air-interpreter/src/marine.rs @@ -63,8 +63,23 @@ pub fn invoke_tracing( tracing_params: String, tracing_output_mode: u8, ) -> InterpreterOutcome { - logger::init_tracing(tracing_params, tracing_output_mode); - execute_air(air, prev_data, data, params, call_results) + use tracing::Dispatch; + use tracing_subscriber::fmt::format::FmtSpan; + + let builder = tracing_subscriber::fmt() + .with_env_filter(tracing_params) + .with_span_events(FmtSpan::ENTER | FmtSpan::CLOSE) + .with_writer(std::io::stderr); + + let dispatch = if logger::json_output_mode(tracing_output_mode) { + let subscriber = builder.json().finish(); + Dispatch::new(subscriber) + } else { + // Human-readable output. + let subscriber = builder.finish(); + Dispatch::new(subscriber) + }; + tracing::dispatcher::with_default(&dispatch, || execute_air(air, prev_data, data, params, call_results)) } #[marine]