refactor(logging): enhance logging setup and usage

- Modified the `setup_logging` function to return a `Subscriber`, improving flexibility and reuse.
- Integrated `tracing::subscriber::set_global_default` in the main functions to establish the logging subscriber globally.
- Added configurations for span events and control over file and line information display.

Signed-off-by: Harald Hoyer <harald@matterlabs.dev>
This commit is contained in:
Harald Hoyer 2024-11-28 15:47:16 +01:00
parent 5b7f7482e6
commit f0fea5c122
Signed by: harald
GPG key ID: F519A1143B3FBE32
3 changed files with 25 additions and 10 deletions

View file

@ -110,7 +110,10 @@ struct Arguments {
async fn main() -> Result<()> {
let args = Arguments::parse();
setup_logging(&args.log_level)?;
tracing::subscriber::set_global_default(setup_logging(
env!("CARGO_CRATE_NAME"),
&args.log_level,
)?)?;
info!("Quote verified! Connection secure!");

View file

@ -26,7 +26,11 @@ use zksync_basic_types::L1BatchNumber;
#[tokio::main]
async fn main() -> Result<()> {
let args = Arguments::parse();
setup_logging(&args.log_level)?;
tracing::subscriber::set_global_default(setup_logging(
env!("CARGO_CRATE_NAME"),
&args.log_level,
)?)?;
validate_arguments(&args)?;
let (stop_sender, stop_receiver) = watch::channel(false);
let mut process_handle = tokio::spawn(verify_batches_proofs(stop_receiver, args));

View file

@ -5,9 +5,11 @@
use anyhow::Context;
use tracing::level_filters::LevelFilter;
use tracing::Subscriber;
use tracing_log::LogTracer;
use tracing_subscriber::fmt::format::FmtSpan;
use tracing_subscriber::Registry;
use tracing_subscriber::{fmt, prelude::*, EnvFilter};
use tracing_subscriber::{prelude::*, EnvFilter};
/// A log level parser for clap, with "off", "error", "warn", "info", "debug", "trace" as valid values
#[derive(Clone)]
@ -42,7 +44,10 @@ impl clap::builder::TypedValueParser for LogLevelParser {
}
/// Setup standard logging and loglevel for the current crate and the `teepot` crate.
pub fn setup_logging(log_level: &LevelFilter) -> anyhow::Result<()> {
pub fn setup_logging(
crate_name: &str,
log_level: &LevelFilter,
) -> anyhow::Result<impl Subscriber + Send + Sync + 'static> {
LogTracer::init().context("Failed to set logger")?;
let filter = EnvFilter::builder()
.try_from_env()
@ -50,14 +55,17 @@ pub fn setup_logging(log_level: &LevelFilter) -> anyhow::Result<()> {
LevelFilter::OFF => EnvFilter::new("off"),
_ => EnvFilter::new(format!(
"warn,{crate_name}={log_level},teepot={log_level}",
crate_name = env!("CARGO_CRATE_NAME"),
log_level = log_level
)),
});
let subscriber = Registry::default()
.with(filter)
.with(fmt::layer().with_writer(std::io::stderr));
tracing::subscriber::set_global_default(subscriber)?;
Ok(())
let fmt_layer = tracing_subscriber::fmt::layer()
.with_span_events(FmtSpan::NEW | FmtSpan::CLOSE)
.with_file(false)
.with_line_number(false)
.with_writer(std::io::stderr);
let subscriber = Registry::default().with(filter).with(fmt_layer);
Ok(subscriber)
}