Я пытаюсь использовать динамическую c конфигурацию для моего приложения JAR. Все мои ресурсы хранятся в папке /resources/
, соответственно log4j не забирает их. Существует PropertyConfigurator.configure()
, но не подходит, потому что я использую конфигурацию XML.
Обновление:
Структура моего файла JAR:
jar
|-------- resources/
|-------- log4j.properties
log4j2 не видит его.
Мне также нужно динамически загрузить файл log4j2.xml
в root папки, если доступно, я пытался использовать
public static void main(String[] args) throws IOException {
ConfigurationSource source = new ConfigurationSource(new FileInputStream("log4j2.xml"));
Configurator.initialize(null, source);
LoggerContext context = (LoggerContext) LogManager.getContext(false);
context.updateLoggers();
}
но это не работает со стати c регистраторами slf4j, и я продолжаю получать.
log4j:WARN No appenders could be found for logger (Class).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Если я использую
PropertyConfigurator.configure(Program.class.getResource("/resource/log4j2.properties"));
, то ошибка исчезает, но игнорирует log4j2.xml
в каталоге с jar. И настроить его можно только путем перепаковки приложения.