diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 6759c84a9..eb203ed05 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -200,7 +200,8 @@ #### Debug/Trace log level Tuwunel builds without debug or trace log levels at compile time by default for substantial performance gains in CPU usage and improved compile times. If you need to access debug/trace log levels, you will need to build without the -`release_max_log_level` feature or use our provided static debug binaries. +`release_max_log_level` feature or use our provided release-logging binaries +and images. #### Changing log level dynamically diff --git a/src/core/debug.rs b/src/core/debug.rs index 864279e0b..c17c7806f 100644 --- a/src/core/debug.rs +++ b/src/core/debug.rs @@ -114,6 +114,12 @@ pub fn rttype_name(_: &T) -> &'static str { type_name::() } #[must_use] pub fn type_name() -> &'static str { std::any::type_name::() } +/// Returns true if debug logging is enabled. In this mode extra logging calls +/// are made at all log levels, not just DEBUG and TRACE. These logs are demoted +/// to DEBUG level when this function returns false; as a consequence they will +/// be elided by `release_max_log_level` when featured. #[must_use] #[inline] -pub const fn logging() -> bool { cfg!(debug_assertions) } +pub const fn logging() -> bool { + cfg!(debug_assertions) || cfg!(tuwunel_debug) || cfg!(not(feature = "release_max_log_level")) +}