mithril_common/test/logging/
mod.rs1mod memory_logger;
4
5pub use memory_logger::*;
6
7#[macro_export]
20macro_rules! define_test_logger {
21 () => {
22 #[cfg(test)]
23 pub(crate) struct TestLogger;
24
25 #[cfg(test)]
26 mod test_logger_impl {
27 use std::io;
28 use std::sync::Arc;
29
30 use slog::{Drain, Logger};
31 use slog_async::Async;
32 use slog_term::{CompactFormat, PlainDecorator};
33
34 use $crate::test::logging::{MemoryDrainForTest, MemoryDrainForTestInspector};
35
36 impl super::TestLogger {
37 fn from_writer<W: io::Write + Send + 'static>(writer: W) -> Logger {
38 let decorator = PlainDecorator::new(writer);
39 let drain = CompactFormat::new(decorator).build().fuse();
40 let drain = Async::new(drain).build().fuse();
41 Logger::root(Arc::new(drain), slog::o!())
42 }
43
44 pub(crate) fn stdout() -> Logger {
45 Self::from_writer(slog_term::TestStdoutWriter)
46 }
47
48 pub(crate) fn memory() -> (Logger, MemoryDrainForTestInspector) {
49 let (drain, inspector) = MemoryDrainForTest::new();
50 (Logger::root(drain.fuse(), slog::o!()), inspector)
51 }
52 }
53 }
54 };
55}
56pub use define_test_logger;