Log4j从字符串读取配置

时间:2018-03-30 08:23:04

标签: java logging log4j2

是否可以从字符串而不是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配置。 感谢您的帮助:))

1 个答案:

答案 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}是系统属性,您可以设置。