如何通过 JUnit 测试拦截 SLF4J(带 logback)日志记录? [英] How to intercept SLF4J (with logback) logging via a JUnit test?
本文介绍了如何通过 JUnit 测试拦截 SLF4J(带 logback)日志记录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有可能通过 JUnit 测试用例以某种方式拦截日志记录(SLF4J + logback)并获得 InputStream
(或其他可读的东西)...?
Is it possible to somehow intercept the logging (SLF4J + logback) and get an InputStream
(or something else that is readable) via a JUnit test case...?
推荐答案
您可以创建自定义 appender
You can create a custom appender
public class TestAppender extends AppenderBase<LoggingEvent> {
static List<LoggingEvent> events = new ArrayList<>();
@Override
protected void append(LoggingEvent e) {
events.add(e);
}
}
并配置 logback-test.xml 以使用它.现在我们可以从我们的测试中检查日志事件:
and configure logback-test.xml to use it. Now we can check logging events from our test:
@Test
public void test() {
...
Assert.assertEquals(1, TestAppender.events.size());
...
}
注意:如果没有得到任何输出,请使用 ILoggingEvent
- 请参阅注释部分以了解推理.
NOTE: Use ILoggingEvent
if you do not get any output - see the comment section for the reasoning.
这篇关于如何通过 JUnit 测试拦截 SLF4J(带 logback)日志记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文