diff --git a/src/api2/backup/environment.rs b/src/api2/backup/environment.rs index 0a7c67b6..99d885e2 100644 --- a/src/api2/backup/environment.rs +++ b/src/api2/backup/environment.rs @@ -2,6 +2,7 @@ use anyhow::{bail, format_err, Error}; use nix::dir::Dir; use std::collections::HashMap; use std::sync::{Arc, Mutex}; +use tracing::info; use ::serde::Serialize; use serde_json::{json, Value}; @@ -141,7 +142,7 @@ impl BackupEnvironment { auth_id, worker, datastore, - debug: false, + debug: tracing::enabled!(tracing::Level::DEBUG), formatter: JSON_FORMATTER, backup_dir, last_backup: None, @@ -687,12 +688,16 @@ impl BackupEnvironment { } pub fn log>(&self, msg: S) { - self.worker.log_message(msg); + info!("{}", msg.as_ref()); } pub fn debug>(&self, msg: S) { if self.debug { - self.worker.log_message(msg); + // This is kinda weird, we would like to use tracing::debug! here and automatically + // filter it, but self.debug is set from the client-side and the logs are printed on + // client and server side. This means that if the client sets the log level to debug, + // both server and client need to have 'debug' logs printed. + self.log(msg); } } diff --git a/src/api2/reader/environment.rs b/src/api2/reader/environment.rs index 602c65e4..3b2f06f4 100644 --- a/src/api2/reader/environment.rs +++ b/src/api2/reader/environment.rs @@ -10,6 +10,7 @@ use pbs_datastore::backup_info::BackupDir; use pbs_datastore::DataStore; use proxmox_rest_server::formatter::*; use proxmox_rest_server::WorkerTask; +use tracing::info; /// `RpcEnvironment` implementation for backup reader service #[derive(Clone)] @@ -39,7 +40,7 @@ impl ReaderEnvironment { auth_id, worker, datastore, - debug: false, + debug: tracing::enabled!(tracing::Level::DEBUG), formatter: JSON_FORMATTER, backup_dir, allowed_chunks: Arc::new(RwLock::new(HashSet::new())), @@ -47,12 +48,16 @@ impl ReaderEnvironment { } pub fn log>(&self, msg: S) { - self.worker.log_message(msg); + info!("{}", msg.as_ref()); } pub fn debug>(&self, msg: S) { if self.debug { - self.worker.log_message(msg); + // This is kinda weird, we would like to use tracing::debug! here and automatically + // filter it, but self.debug is set from the client-side and the logs are printed on + // client and server side. This means that if the client sets the log level to debug, + // both server and client need to have 'debug' logs printed. + self.log(msg); } } diff --git a/src/server/pull.rs b/src/server/pull.rs index 823515e9..de1bb5d5 100644 --- a/src/server/pull.rs +++ b/src/server/pull.rs @@ -278,8 +278,15 @@ impl PullSource for RemoteSource { ns: &BackupNamespace, dir: &BackupDir, ) -> Result, Error> { - let backup_reader = - BackupReader::start(&self.client, None, self.repo.store(), ns, dir, true).await?; + let backup_reader = BackupReader::start( + &self.client, + None, + self.repo.store(), + ns, + dir, + tracing::enabled!(tracing::Level::DEBUG), + ) + .await?; Ok(Arc::new(RemoteReader { backup_reader, dir: dir.clone(),