Było kilka próśb o wsparcie dla lepszej konfiguracji programistycznej dla Log4j 2. Niestety, trwało to tak długo. Od wersji Log4j 2.4 interfejs API został dodany do log4j-core, aby ułatwić programmatic configuration.
Nowa funkcja API ConfigurationBuilder
umożliwia użytkownikom tworzenie komponentów definicji. Dzięki temu API nie trzeba pracować bezpośrednio z rzeczywistymi obiektami konfiguracyjnymi (takimi jak LoggerConfig i FileAppender), które wymagają dużej wiedzy na temat działania Log4j pod maską. Definicje komponentów dodawane są do ConfigurationBuilder, a po zebraniu wszystkich definicji tworzone są wszystkie rzeczywiste obiekty konfiguracyjne (takie jak Loggers i Appenders). Czuje się trochę jak składnia konfiguracji XML, z wyjątkiem tego, że piszesz kod Java.
Należy pamiętać, że nowy interfejs API ConfigurationBuilder
pozwala kodowi użytkownika utworzyć nową konfigurację lub całkowicie zastąpić istniejącą konfigurację. Jeśli twój przypadek użycia jest inny i chcesz programowo zmodyfikować (zamiast wymienić) istniejącą konfigurację po uruchomieniu Log4j, będziesz musiał pracować z rzeczywistymi obiektami konfiguracyjnymi. W takim przypadku zapoznaj się z rozdziałem Programmatically Modifying the Current Configuration after Initialization instrukcji.
To jest zaledwie duplikat, ponieważ ma być log4j2 pytanie. Połączone pytanie odnosi się do log4j1 (który nie ujawnia nawet tych samych metod co log4j2) i slf4j. –
Nie jestem pewien, czy ci, którzy zamknęli to pytanie, wiedzą, o co właściwie chodzi. –
Obecnie, jako obejście problemu, porzuciłem log4j2 i przeszedłem do Log4J ("Log4J1"), który umożliwia dynamiczną konstrukcję z konfiguracji XML. –