Как использовать файл logging.properties с диска в качестве файла java.util.logging.properties

У меня есть базовая программа cmd, которая вызывает банку с классом Install с основным методом. Класс 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 вместо файла по умолчанию из папки ресурсов? Есть ли способ, которым я могу заставить это?


person Nidhish Puthiyadath    schedule 11.07.2013    source источник


Ответы (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

person dic19    schedule 11.07.2013
comment
Спасибо за отзыв. Но проблема здесь в том, что мне все еще нужно изменить класс Install для этого. Я хочу иметь возможность указать файл свойств через командную строку, возможно ли это? - person Nidhish Puthiyadath; 12.07.2013
comment
Всегда пожалуйста. В этом случае вам следует взглянуть на это. Вам понадобится что-то вроде java -jar -Djava.util.logging.config.file="./yourLogProperties.properties" Я не проводил никаких тестов, поэтому не могу быть уверен, что это сработает. Попробуйте и дайте нам знать, если это так! - person dic19; 12.07.2013
comment
Спасибо. Похоже, это сработало. По какой-то причине я подумал, что должен сделать файл java.util.logging системным свойством. - person Nidhish Puthiyadath; 12.07.2013