Настроить java.util.logging с помощью apache commons-configuration PropertiesConfiguration?

Я хочу загрузить файлы свойств и аргументы командной строки, а затем динамически настроить ведение журнала во время выполнения, что раньше я мог сделать так:

Properties configuration;
...

ByteArrayOutputStream os = new ByteArrayOutputStream();
ByteArrayInputStream is;
byte[] buf;
try {
    configuration.store(os, "logging");
    buf = os.toByteArray();
    is = new ByteArrayInputStream(buf);
    java.util.logging.LogManager.getLogManager().readConfiguration(is);
} catch (IOException e) {
    System.err.println("Failed to configure java.util.logging.LogManager");
}

Отлично работает с Properties, но можно ли это сделать с помощью PropertiesConfiguration?

(К вашему сведению, я надеялся использовать массивы свойств, которые предоставляет общая конфигурация)


person KCD    schedule 23.10.2013    source источник


Ответы (2)


Используйте ConfigurationConverter для преобразования PropertiesConfiguration в стандартный файл свойств.

person Jakub Bochenski    schedule 29.10.2013

Неа. Но вы можете преобразовать PropertiesConfiguration в свойства

public static Properties configurationAsProperties(){
    Properties fromConfiguration = new Properties();
    Iterator<String> keys = configuration.getKeys();
    while (keys.hasNext()) {
        String key = keys.next();
        String value = asString(configuration.getProperty(key));
        fromConfiguration.setProperty(key,value);
        // System.out.println(key + " = " + value);
    }
    return fromConfiguration;
}

Просто не теряйте эти значения, разделенные запятыми (configuration.getString вернет только первое)

private static String asString(Object value) {
    if (value instanceof List) {
        List<?> list = (List<?>) value;
        value = StringUtils.join(list.iterator(), ",");
    }
    return (String) value;
}
person KCD    schedule 23.10.2013