Конфигурация чтения log4j из строки

Можно ли читать конфигурацию log4j из строки вместо URI? Или как преобразовать String в URI. У меня что-то вроде этого:

String robotId = "robot23";
FileHandle file = new FileHandle(new File("./log4j2.xml"));
String fileAsString = file.readString(); //LibGDX method
fileAsString = fileAsString.replace("log.log", robotId + "-log.log");

А теперь как мне преобразовать fileAsString в конфигурацию для log4j вот так

LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
ctx.setConfigLocation(configUri);

Обратите внимание, что fileAsString содержит конфигурацию xml. Спасибо за любую помощь :)

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пытаетесь динамически изменить некоторые свойства log4j2? Программно это делать не нужно. Вы можете использовать Замена собственности:

<?xml version = "1.0" encoding = "UTF-8"?>
<Configuration status = "warn" name = "MyApp" packages = "">
  <Appenders>
    <File name = "MyFile" fileName = "logs/${sys:robotId}-log.log">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
      </PatternLayout>
    </File>
  </Appenders>
  <Loggers>
    <Root level = "error">
      <AppenderRef ref = "MyFile"/>
    </Root>
  </Loggers>
</Configuration>

Где ${sys:robotId} - системное свойство, которое вы можете установить.

Другие вопросы по теме