Как использовать файл logging.properties с диска в качестве файла java.util.logging.properties
У меня есть базовая программа cmd, которая вызывает jar, у которого есть класс Install с методом main. Класс Install использует файл java.util.logging.config.file из папки ресурсов.
private static void setupLogging() {
if (System.getProperty("java.util.logging.config.file") == null) {
final InputStream inputStream = Install.class.getResourceAsStream("/logging.properties");
try {
LogManager.getLogManager().readConfiguration(inputStream);
} catch (final IOException e) {
Logger.getAnonymousLogger().severe("Could not load default logging.properties file");
Logger.getAnonymousLogger().severe(e.getMessage());
}
}
}
Эта программа установки относится к другому проекту, и я не должен его менять. Но я хочу использовать отдельный файл logging.properties с моего диска (желательно из той же папки, где у меня есть программа cmd). Как заставить эту программу установки использовать мой файл logging.properties вместо файла по умолчанию из папки ресурсов? Есть ли способ, которым я могу заставить это?
1 ответ
Вы можете попробовать это:
String yourFilePath = "./yourLogProperties.properties";
LogManager.getLogManager().readConfiguration(new FileInputStream(yourFilePath);
Свойства будут загружены из файла, хранящегося в той же папке, в которой выполняется ваше приложение.
Обновить:
Я немного искал, как передать свойства через командную строку, и здесь есть довольно хорошее объяснение. Итак, в вашем случае вам понадобится что-то вроде этого:
java -jar -Djava.util.logging.config.file="./yourLogProperties.properties" YourApp.jar
Также вы можете проверить, работает ли он, выполнив простой тест:
public class Tests {
public static void main(String[] args) {
System.out.println(System.getProperty("java.util.logging.config.file"));
}
}
Запустив это из командной строки, вы должны получить ответ ./yourLogProperties.properties