lightning_signer/util/
test_logger.rs1use 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}