我在我的应用程序中使用SLF4J,它部署在websphere liberty profile上。我想配置它以便1-日志记录配置(例如log4j属性,如果我将log4j与slf4j一起使用)驻留在应用程序war文件之外,2 - 日志记录配置仅适用于我的应用程序而不适用于部署在同一配置文件中的其他应用程序
(1)可以通过将slf4j与java.util.logging一起使用来实现,因为websphere liberty与之集成,但是日志配置适用于整个配置文件
然而,获得(1)和(2)两者的最佳方式是什么?
答案 0 :(得分:1)
我最终使用org.apache.log4j.PropertyConfigurator
以及java.nio.file.WatchService
。
watchservice将在预定义的位置观看log4j.properties文件以进行更改。如果文件被更改,它将调用此方法
/**
* Update configuration.
*/
public void updateConfiguration() {
Path path = configPath.resolve(LOG_FILE_NAME);
if (Files.exists(path)){
System.out.println(MessageFormat.format("Reloading logging configuration from {0}", path.toAbsolutePath()));
PropertyConfigurator.configure(path.toAbsolutePath().toString());
} else {
System.err.println(MessageFormat.format("log4j.properties file was expected at {0} but was not present. Please create this file and configure it for logging to work.", path.toAbsolutePath()));
}
}
这将允许应用程序外部的日志配置文件,该文件也可以在运行时更新。