以编程方式设置logback.xml路径

sha*_*bby 41 java logback

我知道我可以像这样设置logback.xml路径:

将默认配置文件的位置指定为系统属性

您可以使用名为"logback.configurationFile"的系统属性指定默认配置文件的位置.此属性的值可以是URL,类路径上的资源或应用程序外部文件的路径.

java -Dlogback.configurationFile=/path/to/config.xml chapters.configuration.MyApp1
Run Code Online (Sandbox Code Playgroud)

但我怎么能在代码中做到这一点?

Luc*_*cci 51

LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.reset();
JoranConfigurator configurator = new JoranConfigurator();
InputStream configStream = FileUtils.openInputStream(logbackPropertiesUserFile);
configurator.setContext(loggerContext);
configurator.doConfigure(configStream); // loads logback file
configStream.close();
Run Code Online (Sandbox Code Playgroud)

  • JoranConfigurator 继承自 http://logback.qos.ch/apidocs/ch/qos/logback/core/joran/GenericConfigurator.html 并且有 5 个对 `doConfigure()` 的覆盖 (2认同)

ass*_*ias 48

你可以使用:

System.setProperty("logback.configurationFile", "/path/to/config.xml");
Run Code Online (Sandbox Code Playgroud)

但它必须在加载logback之前发生,例如:

class Main {
  static { System.setProperty("logback.configurationFile", "/path/to/config.xml");}
  private final Logger LOG = LoggerFactory.getLogger(Main.class);

  public void main (String[] args) { ... }
}
Run Code Online (Sandbox Code Playgroud)

注意:我没有测试过,但应该可以使用.

  • 我测试了它,它确实有效. (8认同)
  • 如果要覆盖任何默认配置,则此方法不起作用.您需要使用JoranConfiguration重置配置 (3认同)

小智 11

修改环境变量可能并不总是可行的.要正确地看到回滚手册:

http://logback.qos.ch/manual/configuration.html#joranDirectly