是否可以从字符串而不是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配置。 感谢您的帮助:))
答案 0 :(得分:1)
您是否尝试动态更改某些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}
是系统属性,您可以设置。