mod memory_logger;
pub use memory_logger::*;
#[macro_export]
macro_rules! define_test_logger {
() => {
#[cfg(test)]
pub(crate) struct TestLogger;
#[cfg(test)]
mod test_logger_impl {
use std::io;
use slog::{Drain, Logger};
use slog_async::Async;
use slog_term::{CompactFormat, PlainDecorator, TestStdoutWriter};
use $crate::test::logging::{MemoryDrainForTest, MemoryDrainForTestInspector};
impl super::TestLogger {
fn from_writer<W: io::Write + Send + 'static>(writer: W) -> Async {
let decorator = PlainDecorator::new(writer);
let drain = CompactFormat::new(decorator).build().fuse();
Async::new(drain).build()
}
pub(crate) fn stdout() -> Logger {
Logger::root(Self::from_writer(TestStdoutWriter).fuse(), slog::o!())
}
pub(crate) fn memory() -> (Logger, MemoryDrainForTestInspector) {
let (memory_drain, inspector) = MemoryDrainForTest::new();
(Logger::root(memory_drain.fuse(), slog::o!()), inspector)
}
}
}
};
}
pub use define_test_logger;