Могут ли сосуществовать log4j и утилита java
Мое приложение использует log4j, но OkHttpClient использует ведение журнала утилит java. Итак, кроме log4j.properties, я создал файл logging.properties со следующим содержимым:
handlers=java.util.logging.FileHandler
.level=FINE
okhttp3.internal.http2.level=FINE
java.util.logging.FileHandler.pattern = logs/%hjava%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
Затем я добавил это в параметры JVM, используемые для запуска приложения -Djava.util.logging.config.file="file://${BASE_DIR}/logging.properties"
Но я не вижу никаких новых папок, созданных, как указано обработчиком файлов. Кто-нибудь знает почему?
1 ответ
Но я не вижу никаких новых папок, созданных, как указано обработчиком файлов. Кто-нибудь знает почему?
FileHandler не будет создавать никаких новых папок. Каталог должен быть создан до того, как FileHandler создаст файл.
Системное свойство требует путь к файлу, который находится в файловой системе. Он не будет расширять системные свойства или переменные среды с помощью синтаксиса знака доллара.
Вы можете использовать относительный путь на основе рабочего каталога или использовать абсолютный путь к logging.properties. Свойства ведения журнала нельзя упаковать в архив.
Если вы хотите обойти это ограничение, то вы хотите создать пользовательский класс конфигурации и использовать java.util.logging.config.class
собственность в сочетании с java.util.logging.config.file
имущество. Затем вы пишете класс, который читает file://${BASE_DIR}/logging.properties
и выполняет необходимое преобразование в путь к файлу. Затем обновите конфигурацию, если вы используете JDK9 или новее. В старых версиях вам нужно использовать readConfiguration и добавить код, чтобы обойти ограничения LogManager