是否有log4j的附加程序,该附加程序仅存储日志记录事件的列表(用于单元测试,以验证未写入任何错误日志)?

最佳答案

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

您可以轻松编写自己的代码,但是如果仅将它们用于单元测试,则可能会模拟Logger并断言不会对其进行任何调用。覆盖目标类中的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();
}

关于java - 在内存中log4j的 'list appender',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1149657/

10-11 04:49