我创建了一个CaptureLogger,它扩展了AbstractLogger。我在该类中有代码,当发生日志记录事件时,它将捕获消息并将其存储在字符串数组中。
但是,我无法将此CaptureLogger挂接到我正在测试的类的记录器上。我试图做
public class CaptureLogger extends AbstractLogger {
private List<Object> loggedMessages;
public static Level messageLevel = Level.DEBUG;
private static final long serialVersionUID = 1l; //one-ell
public CaptureLogger(final String name) {
super(name);
loggedMessages = new ArrayList<>();
}
public List<Object> getLoggedMessages(){ return loggedMessages;}
public void setLogLevel(final Level level){
messageLevel = level;
}
@Override
public boolean isEnabled(Level level) {
return true;
}
@Override
public void log(Level level, Object message){
loggedMessages.add(message);
}
@Override
public void log(final Level level, final Supplier<?> msgSupplier) {
log(level, msgSupplier.get());
}
@Override
public boolean isEnabled(Level level, Marker marker, Message message, Throwable t) {
return level == messageLevel;
}
ClassUnderTest是我要测试的类。
我们使用Lombok Log4j2在代码中创建和实例化我们的登录,所以我需要保留一些与Lombok一起使用的东西。
此外,我正在使用TestNG作为测试框架。
有人可以为此提供指针或代码示例吗?
谢谢
标记
这是我的CaptureLogger类的摘要:
{{1}}