Уровень журнала в фуфайках новый LoggingFeature

Я пытаюсь войти в систему с Джерси 2.23. Начиная с этой версии, класс LoggingFilter устарел, как можно прочитать, например, здесь:https://jersey.java.net/documentation/latest/logging_chapter.html. Поэтому я должен использовать LoggingFeature вместо. Что сделал не работа в register метод ResourceConfig как это объясняется в этой документации. Но в конце концов property метод работы:

client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_SERVER, "WARN");

это печатает каждое сообщение как предупреждение. К сожалению, это нигде не задокументировано (по крайней мере, я ничего не мог найти), какие значения разрешены. Очевидно, это должна быть строка, потому что я получаю сообщение журнала о том, что нет никакого способа преобразовать значение в строку, когда я пытаюсь что-то еще, кроме строки. Теперь я хочу зарегистрировать эти сообщения с трассировкой уровня, и я не могу найти подходящую строку для достижения этого. Например, "трассировка" и "штраф" не работают, в этих случаях ничего не регистрируется. Я должен упомянуть, что я использую Log4j2 вместе с Slf4jBridgeHandler потому что Джерси использует Джул.

1 ответов


я боролся с этим в течение нескольких часов, прежде чем окончательно раскрыть "тайну" сегодня.

это несколько противоречиво, но уровень, который вы устанавливаете с LOGGING_FEATURE_LOGGER_LEVEL_SERVER - это минимальный уровень, на который должен быть установлен регистратор сервера для печати ваших журналов. Я предположил, основываясь на имени, что это установка фактического уровня регистратора-подразумевая, что установка его в FINER или FINEST будет производить больше продукции. Вместо этого он просто " отключается" ведение журнала, если не достигнут определенный уровень.

в качестве примера, если вы установите его в WARNING тогда вы увидите журналы, пока сервер / клиент настроен на печать по крайней мере FINEST (самое низкое значение)

поэтому, установив его в WARNING (буквальный WARN не работает для меня в 2.23.1) вы увидите журналы, потому что по умолчанию ведение журнала обычно в обычно в $JAVA_HOME/jre/lib/logging.properties. Например, вы можете внести следующие изменения в файл, и вам больше не нужно будет устанавливать какие-либо специальные свойства в коде:

java.util.logging.ConsoleHandler.level = FINEST  
org.glassfish.jersey.test.JerseyTest.level = FINEST

очевидным недостатком этого является то, что это повлияет на все, что вы запустите из этого JDK / JRE. Есть способы переопределить это стандартное местоположение и использовать альтернативный logging.properties файл, но это зависит от того, как вы выполняете свой код, поэтому я позволю вам исследовать это на основе ваших обстоятельств.

одним из примеров будет этот поток, который объясняет, как это сделать при использовании Maven:уровень ведения журнала под maven surefire