是否可以从字符串而不是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}
是可以设置的系统属性。