Я пытаюсь настроить Java Logging API FileHandler, чтобы зарегистрировать мой сервер в файле в папке в моем домашнем каталоге, но я не хочу создавать эти каталоги на каждой машине, на которой он работает.
Например, в файле logging.properties я указываю:
java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=%h/app-logs/MyApplication/MyApplication_%u-%g.log
Это позволит мне собирать журналы в моем домашнем каталоге (% h) для MyApplication и вращать их (используя переменные% u и% g).
Log4j поддерживает это, когда я указываю в своих log4j.properties:
log4j.appender.rolling.File=${user.home}/app-logs/MyApplication-log4j/MyApplication.log
Похоже, что есть ошибка против Logging FileHandler: Ошибка 6244047: невозможно указать drictorys для регистрации FileHandler, если они не существуют
Похоже, что они не планируют его исправлять или не раскрывают какие-либо свойства для решения этой проблемы (помимо того, что ваше приложение анализирует logging.properties или жесткий код, необходимый для этого пути):
Похоже, что java.util.logging.FileHandler не делает ожидайте, что указанный каталог может не существовать. Обычно он должен проверьте это состояние в любом случае. Кроме того, это должен проверить запись в каталоге разрешений. Другой вопрос что делать, если одна из этих проверок не проходит.
Одна из возможностей - создать отсутствующие каталоги в пути, если пользователь имеет соответствующие разрешения. Другая заключается в том, чтобы выбросить исключение IO с помощью ясное сообщение, что не так. последний подход выглядит более согласованным.