是否可以从字符串而不是URI读取log4j配置?或如何将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属性?您无需以编程方式进行操作。您可以使用Property Substitution

<?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}是可以设置的系统属性。

10-05 18:57