Подтвердить что ты не робот

Загрузите файл java.util.logging.config.file для инициализации по умолчанию.

Я пытаюсь загрузить пользовательский log.properties файл при запуске моего приложения.

Мой файл свойств находится в том же пакете, что и мой основной класс, поэтому я предположил, что параметр командной строки -Djava.util.logging.config.file=log.properties должен получить загруженный файл свойств.

Но свойства загружаются только тогда, когда я указываю полный абсолютный путь к файлу свойств. Любые предложения по использованию относительного пути?

4b9b3361

Ответ 1

Java-журнал не ищет весь ваш жесткий диск для файла; есть очень простые правила поиска файлов. Вы хотите, чтобы Java увидела, что эти два файла принадлежат друг другу, но вы ничего не сказали об этом. Поскольку Java не видит связи между файлом свойств и вашим классом, кроме того, что они находятся в одной папке на вашем диске, он не может найти файл.

-Djava.util.logging.config.file=log.properties работает только в том случае, если файл log.properties находится в текущем каталоге процесса Java (что может быть довольно случайным). Поэтому вы должны использовать абсолютный путь здесь.

Альтернативным решением было бы переместить файл logging.properties в $JAVA_HOME/lib/ (или отредактировать файл, который должен быть там). В этом случае вам не нужно устанавливать свойство System.

Ответ 2

Вы можете легко загружать файлы свойств java.util.logging с относительного пути очень легко. Это то, что я помещал внутри блока static {} в мой класс Main. Поместите ваш logging.properties файл в default package, и вы можете легко получить к нему доступ со следующим кодом.

final InputStream inputStream = Main.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());
}

Ответ 3

Использование logging не загружается из пути к классам, ему нужен абсолютный путь, поэтому другие пакеты ведения журнала, такие как log4j, намного проще настраивать и лучше для веб-приложений, где боль становится доступной для абс.

это вообще не объясняется в java.util.logging.LogManager doco.