Skip to content

Commit 65ccee3

Browse files
Nicholas-ClavetteNick ClavetteSpriteOvO
committed
Implement Debug for Logger (#81)
Co-authored-by: Nick Clavette <nclavette@aphysci.com> Co-authored-by: Asuna <SpriteOvO@gmail.com>
1 parent 94bf642 commit 65ccee3

File tree

2 files changed

+42
-6
lines changed

2 files changed

+42
-6
lines changed

spdlog/src/logger.rs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::{result::Result as StdResult, time::Duration};
1+
use std::{fmt::Debug, result::Result as StdResult, time::Duration};
22

33
use crate::{
44
env_level,
@@ -115,6 +115,36 @@ pub struct Logger {
115115
periodic_flusher: Mutex<Option<(Duration, PeriodicWorker)>>,
116116
}
117117

118+
impl Debug for Logger {
119+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
120+
f.debug_struct("Logger")
121+
.field("name", &self.name)
122+
.field("level_filter", &self.level_filter())
123+
.field(
124+
"sinks",
125+
&self
126+
.sinks
127+
.iter()
128+
.map(|sink| sink.level_filter())
129+
.collect::<Vec<_>>(),
130+
)
131+
.field("flush_level_filter", &self.flush_level_filter())
132+
.field("error_handler", &self.error_handler.read())
133+
.field(
134+
"periodic_flusher",
135+
&self
136+
.periodic_flusher
137+
.lock()
138+
.as_deref()
139+
.map(|opt| opt.as_ref().map(|(dur, _)| *dur))
140+
.as_ref()
141+
.map(|dur| dur as &dyn Debug)
142+
.unwrap_or(&"*lock is poisoned*"),
143+
)
144+
.finish()
145+
}
146+
}
147+
118148
impl Logger {
119149
/// Gets a [`LoggerBuilder`] with default parameters:
120150
///
@@ -666,8 +696,7 @@ mod tests {
666696

667697
#[test]
668698
fn send_sync() {
669-
assert_send::<Logger>();
670-
assert_sync::<Logger>();
699+
assert_trait!(Logger: Send + Sync + Debug);
671700
}
672701

673702
#[test]

spdlog/src/test_utils/common.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,16 @@ pub fn build_test_logger(cb: impl FnOnce(&mut LoggerBuilder) -> &mut LoggerBuild
220220
builder.build().unwrap()
221221
}
222222

223-
pub fn assert_send<T: Send>() {}
224-
225-
pub fn assert_sync<T: Sync>() {}
223+
#[doc(hidden)]
224+
#[macro_export]
225+
macro_rules! assert_trait {
226+
($type:ty: $($traits:tt)+) => {{
227+
fn __assert_trait<T: $($traits)+>() {}
228+
__assert_trait::<$type>();
229+
}};
230+
}
231+
#[allow(unused_imports)]
232+
pub use assert_trait;
226233

227234
#[must_use]
228235
pub fn echo_logger_from_pattern(

0 commit comments

Comments
 (0)