相关疑难解决方法(0)

如何在记录器中对消息执行JUnit断言

我有一些测试代码,它调用Java记录器来报告其状态.在JUnit测试代码中,我想验证在此记录器中是否输入了正确的日志.以下内容:

methodUnderTest(bool x){
    if(x)
        logger.info("x happened")
}

@Test tester(){
    // perhaps setup a logger first.
    methodUnderTest(true);
    assertXXXXXX(loggedLevel(),Level.INFO);
}
Run Code Online (Sandbox Code Playgroud)

我想这可以通过特殊改编的记录器(或处理程序或格式化程序)来完成,但我更愿意重用已经存在的解决方案.(而且,说实话,我不清楚如何从记录器获取logRecord,但假设这是可能的.)

java logging junit assert

177
推荐指数
14
解决办法
15万
查看次数

如何在Log4j2中向Logger添加appender

在Log4j 1.2中,您可以简单地使用记录器并在运行时添加一个appender.例如,这对于测试目的而言非常方便.我们曾经创建了一个模拟appender并将其添加到记录器中.随后我们可以做出不同的断言.

与log4j2有什么相同之处?

例如,此示例显示了其他人如何添加测试追加器.

log4j2页显示了如何添加附加目的地的几个例子.但是,它们会在整体上下文中添加appender.这似乎与为一个特定记录器添加appender不同.

另一个观察是,如果你使用org.apache.logging.log4j.core.Logger而不是org.apache.logging.log4j.Logger,你仍然可以添加appender.但是大多数人使用org.apache.logging.log4j.Logger.实际上,LogManager返回org.apache.logging.log4j.Logger的一个实例.所以,我不知道如何连接这两个类以及它们是否应该连接.

另一个观察是,如果我打电话

      LogManager.getContext().getConfiguration().getLoggers()
Run Code Online (Sandbox Code Playgroud)

我可以在上下文中获取所有LoggerConfig对象的ist.我随后将appender添加到任何LoggerConfig对象.但问题是,如何获取与org.apache.logging.log4j.Logger实例相关的LoggerConfig?

这让我很困惑.

java logging log4 log4j2

3
推荐指数
1
解决办法
2164
查看次数

标签 统计

java ×2

logging ×2

assert ×1

junit ×1

log4 ×1

log4j2 ×1