с использованием библиотеки Log4j2 версии 2.9.1.
Я пытаюсь создать RollingFileAppender
программно:
RollingFileAppender appender = RollingFileAppender.newBuilder()
.withName(name)
.withLayout(...some layout...)
.withStrategy(...some strategy...)
.build();
И я не смог его скомпилировать, потому что он говорит, что в этом построителе нет метода withStrategy
.
Если я переупорядочу вызовы методов:
RollingFileAppender appender = RollingFileAppender.newBuilder()
.withStrategy(...some strategy...)
.withName(name)
.withLayout(...some layout...)
.build();
Он не может скомпилироваться, потому что говорит, что сейчас нет метода build (). Итак, похоже, что эти методы построителя возвращают какой-то базовый построитель вместо того же самого.
Временный обходной путь заключался в создании отдельного метода с универсальным параметром:
private <B extends RollingFileAppender.Builder<B>> RollingFileAppender createAppender() {
return RollingFileAppender.<B>newBuilder()
.withName("name")
.withStrategy(...some strategy...)
.withLayout(...some layout...)
.build();
}
Тогда нормально работает. Но это не обычный способ использования Builder.
Итак, вопрос: является ли это ошибкой и есть ли лучший способ создать RollingFileAppender без этого обходного пути?