Могут ли сосуществовать 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

Другие вопросы по тегам