在log4j的内存'list appender'中

rip*_*234 7 java log4j in-memory appender

是否存在log4j的追加器,它只存储一个日志事件列表(用于单元测试,以验证没有写入错误日志)?

Ric*_*ler 3

有一个MemoryAppender,但它不是标准 log4j 库的一部分。

您可以轻松编写自己的代码,但如果您仅将它们用于单元测试,我可能会模拟记录器并断言不会对其进行任何调用。重写目标类中的 getLogger() 方法或直接在类型上设置模拟 Logger。

使用 Jmock(记忆中的示例,如有错误,敬请谅解):

public void testDoFoo() {
    Mockery mockery = new Mockery();
    Logger mockLogger = mockery.mock(Logger.class);

    Foo foo = new Foo();

    foo.setLogger(mockLogger);

    mockery.checking(new Expectations() {
        {
            never(mockLogger).debug(with(any(String.class));
        }
    };

    ...
    //do the actual test.

    //assert the mock type has never been called.
    mockery.assertIsSatisfied();
}
Run Code Online (Sandbox Code Playgroud)