Настройка Java FileHandler Logging для создания каталогов, если они не существуют

Я пытаюсь настроитьЖурнал Java API & APOS; sFileHandler регистрировать мой сервер в файле в папке в моем домашнем каталоге, но я не хочу создавать эти каталоги на каждом компьютере, на котором он работает.

Например, в файле 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

Похоже, что есть ошибка в Loging FileHandler: Ошибка 6244047: невозможно указать драйверы для регистрации FileHandler, если они не существуют

Похоже, что они не планируют исправлять это или выставлять какие-либо свойства, чтобы обойти проблему (помимо того, что ваше приложение анализирует logging.properties или жесткий код, чтобы найти нужный путь):

It looks like the java.util.logging.FileHandler does not expect that the specified directory may not exist. Normally, it has to check this condition anyway. Also, it has to check the directory writing permissions as well. Another question is what to do if one of these check does not pass.

One possibility is to create the missing directories in the path if the user has proper permissions. Another is to throw an IOException with a clear message what is wrong. The latter approach looks more consistent.

Ответы на вопрос(5)

Ваш ответ на вопрос