Можно ли читать конфигурацию 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. Спасибо за любую помощь :)




Вы пытаетесь динамически изменить некоторые свойства 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} - системное свойство, которое вы можете установить.