lightning_signer/util/
test_logger.rs

1use crate::node::SyncLogger;
2use crate::prelude::*;
3use lightning::util::logger::{Level, Logger, Record};
4
5pub struct TestLogger {
6    level: Level,
7    #[allow(unused)]
8    id: String,
9    pub lines: Mutex<Map<(String, String), usize>>,
10}
11
12impl SendSync for TestLogger {}
13
14impl SyncLogger for TestLogger {}
15
16impl TestLogger {
17    pub fn new() -> TestLogger {
18        Self::new_with_id("".to_owned())
19    }
20
21    pub fn new_with_id(id: String) -> TestLogger {
22        TestLogger { level: Level::Trace, id, lines: Mutex::new(Map::new()) }
23    }
24
25    pub fn enable(&mut self, level: Level) {
26        self.level = level;
27    }
28
29    pub fn assert_log(&self, module: String, line: String, count: usize) {
30        let log_entries = self.lines.lock().unwrap();
31        assert_eq!(log_entries.get(&(module, line)), Some(&count));
32    }
33}
34
35impl Logger for TestLogger {
36    fn log(&self, record: Record) {
37        *self
38            .lines
39            .lock()
40            .unwrap()
41            .entry((record.module_path.to_string(), format!("{}", record.args)))
42            .or_insert(0) += 1;
43        if self.level >= record.level {
44            #[cfg(feature = "std")]
45            println!(
46                "{:<5} {} [{} : {}, {}] {}",
47                record.level.to_string(),
48                self.id,
49                record.module_path,
50                record.file,
51                record.line,
52                record.args
53            );
54        }
55    }
56}