summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock3
-rw-r--r--mullvad-daemon/src/logging.rs19
-rw-r--r--mullvad-ios/Cargo.toml1
-rw-r--r--mullvad-ios/src/logging.rs17
-rw-r--r--mullvad-logging/Cargo.toml2
-rw-r--r--mullvad-logging/src/lib.rs22
6 files changed, 35 insertions, 29 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 640fcafcd1..19482655df 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2970,6 +2970,7 @@ dependencies = [
"tokio",
"tonic",
"tower",
+ "tracing-subscriber",
"tunnel-obfuscation",
]
@@ -3012,7 +3013,7 @@ dependencies = [
name = "mullvad-logging"
version = "0.0.0"
dependencies = [
- "log",
+ "tracing-subscriber",
]
[[package]]
diff --git a/mullvad-daemon/src/logging.rs b/mullvad-daemon/src/logging.rs
index b762d63826..b76bcaeba7 100644
--- a/mullvad-daemon/src/logging.rs
+++ b/mullvad-daemon/src/logging.rs
@@ -1,4 +1,7 @@
-use mullvad_logging::{SILENCED_CRATES, SLIGHTLY_SILENCED_CRATES, WARNING_SILENCED_CRATES};
+use mullvad_logging::{
+ LevelFilter, SILENCED_CRATES, SLIGHTLY_SILENCED_CRATES, WARNING_SILENCED_CRATES,
+ one_level_quieter,
+};
use std::{
io,
path::PathBuf,
@@ -8,7 +11,6 @@ use talpid_core::logging::rotate_log;
use tracing_appender::non_blocking;
use tracing_subscriber::{
EnvFilter, Registry,
- filter::LevelFilter,
fmt::{MakeWriter, format::FmtSpan, writer::OptionalWriter},
layer::SubscriberExt,
reload::Handle,
@@ -231,16 +233,3 @@ fn silence_crates(mut env_filter: EnvFilter) -> EnvFilter {
}
env_filter
}
-
-/// Returns a level filter one level quieter than the input.
-/// Note: This uses `tracing_subscriber::filter::LevelFilter`, not `log::LevelFilter`.
-fn one_level_quieter(level: LevelFilter) -> LevelFilter {
- match level {
- LevelFilter::OFF => LevelFilter::OFF,
- LevelFilter::ERROR => LevelFilter::OFF,
- LevelFilter::WARN => LevelFilter::ERROR,
- LevelFilter::INFO => LevelFilter::WARN,
- LevelFilter::DEBUG => LevelFilter::INFO,
- LevelFilter::TRACE => LevelFilter::DEBUG,
- }
-}
diff --git a/mullvad-ios/Cargo.toml b/mullvad-ios/Cargo.toml
index 6145a70bf8..7c5b3d4588 100644
--- a/mullvad-ios/Cargo.toml
+++ b/mullvad-ios/Cargo.toml
@@ -20,6 +20,7 @@ libc = "0.2"
log = { workspace = true }
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
tonic = { workspace = true }
+tracing-subscriber = { workspace = true }
hyper = { version = "1.4.1", features = ["client", "http1"] }
hyper-util = { workspace = true }
tower = { workspace = true }
diff --git a/mullvad-ios/src/logging.rs b/mullvad-ios/src/logging.rs
index 5384d5db9f..0ce8da719f 100644
--- a/mullvad-ios/src/logging.rs
+++ b/mullvad-ios/src/logging.rs
@@ -3,6 +3,7 @@
//! This module provides a global logger that calls a Swift callback for each log message,
//! allowing Rust logs to be captured by Swift's logging infrastructure.
+use mullvad_logging::LevelFilter;
use std::ffi::CString;
use std::sync::OnceLock;
@@ -15,7 +16,7 @@ pub type LogCallback = extern "C" fn(level: u8, message: *const libc::c_char);
static LOG_CALLBACK: OnceLock<LogCallback> = OnceLock::new();
/// Default log level
-const DEFAULT_LOG_LEVEL: log::LevelFilter = log::LevelFilter::Debug;
+const DEFAULT_LOG_LEVEL: LevelFilter = LevelFilter::DEBUG;
/// Custom logger that forwards to Swift
struct SwiftLogger;
@@ -28,7 +29,7 @@ impl log::Log for SwiftLogger {
let max_level =
mullvad_logging::get_log_level_for_target(metadata.target(), DEFAULT_LOG_LEVEL);
- metadata.level() <= max_level
+ metadata.level() <= to_log_level_filter(max_level)
}
fn log(&self, record: &log::Record<'_>) {
@@ -58,6 +59,18 @@ impl log::Log for SwiftLogger {
static SWIFT_LOGGER: SwiftLogger = SwiftLogger;
+/// Convert from `tracing_subscriber::filter::LevelFilter` to `log::LevelFilter`.
+fn to_log_level_filter(level: LevelFilter) -> log::LevelFilter {
+ match level {
+ LevelFilter::OFF => log::LevelFilter::Off,
+ LevelFilter::ERROR => log::LevelFilter::Error,
+ LevelFilter::WARN => log::LevelFilter::Warn,
+ LevelFilter::INFO => log::LevelFilter::Info,
+ LevelFilter::DEBUG => log::LevelFilter::Debug,
+ LevelFilter::TRACE => log::LevelFilter::Trace,
+ }
+}
+
/// Initialize the Rust logger with a Swift callback.
///
/// This function should be called once early in the application lifecycle,
diff --git a/mullvad-logging/Cargo.toml b/mullvad-logging/Cargo.toml
index ff916abe05..4b20be1ab7 100644
--- a/mullvad-logging/Cargo.toml
+++ b/mullvad-logging/Cargo.toml
@@ -9,7 +9,7 @@ edition.workspace = true
rust-version.workspace = true
[dependencies]
-log = { workspace = true }
+tracing-subscriber = { workspace = true }
[lints]
workspace = true
diff --git a/mullvad-logging/src/lib.rs b/mullvad-logging/src/lib.rs
index 01f583fae0..a971a68333 100644
--- a/mullvad-logging/src/lib.rs
+++ b/mullvad-logging/src/lib.rs
@@ -3,6 +3,8 @@
//! This crate provides common log filtering configuration used across
//! mullvad-daemon, mullvad-ios, and other Mullvad components.
+pub use tracing_subscriber::filter::LevelFilter;
+
/// Crates where only Error level logs are shown (Warn and below are silenced)
pub const WARNING_SILENCED_CRATES: &[&str] = &["netlink_proto", "quinn_udp"];
@@ -41,16 +43,16 @@ pub const SLIGHTLY_SILENCED_CRATES: &[&str] = &["nftnl", "udp_over_tcp"];
///
/// This checks the target against the silenced crate lists and returns
/// the appropriate maximum log level.
-pub fn get_log_level_for_target(target: &str, default_level: log::LevelFilter) -> log::LevelFilter {
+pub fn get_log_level_for_target(target: &str, default_level: LevelFilter) -> LevelFilter {
for silenced in WARNING_SILENCED_CRATES {
if target.starts_with(silenced) {
- return log::LevelFilter::Error;
+ return LevelFilter::ERROR;
}
}
for silenced in SILENCED_CRATES {
if target.starts_with(silenced) {
- return log::LevelFilter::Warn;
+ return LevelFilter::WARN;
}
}
@@ -64,13 +66,13 @@ pub fn get_log_level_for_target(target: &str, default_level: log::LevelFilter) -
}
/// Returns a log level that is one level quieter than the input level.
-pub fn one_level_quieter(level: log::LevelFilter) -> log::LevelFilter {
+pub fn one_level_quieter(level: LevelFilter) -> LevelFilter {
match level {
- log::LevelFilter::Off => log::LevelFilter::Off,
- log::LevelFilter::Error => log::LevelFilter::Off,
- log::LevelFilter::Warn => log::LevelFilter::Error,
- log::LevelFilter::Info => log::LevelFilter::Warn,
- log::LevelFilter::Debug => log::LevelFilter::Info,
- log::LevelFilter::Trace => log::LevelFilter::Debug,
+ LevelFilter::OFF => LevelFilter::OFF,
+ LevelFilter::ERROR => LevelFilter::OFF,
+ LevelFilter::WARN => LevelFilter::ERROR,
+ LevelFilter::INFO => LevelFilter::WARN,
+ LevelFilter::DEBUG => LevelFilter::INFO,
+ LevelFilter::TRACE => LevelFilter::DEBUG,
}
}