Отключить нежелательные INFO-сообщения от SOAP Logger

В вопросе Отфильтровать нежелательные INFO-сообщения от Logger предлагается отключить нежелательный SOAP Ведение журнала INFO путем повышения соответствующего уровня журнала до WARNING следующим образом:

// Disable SOAP-internal INFO logging
Logger.getLogger("javax.enterprise.resource.webservices.jaxws.server").setLevel(Level.WARNING)

URL url = new URL("http://localhost:9999/ws/SoapControl?wsdl");
QName qname = new QName("http://example.ch/", "SoapControlImplService");

Service service = Service.create(url, qname);
SoapControl soapControl = service.getPort(SoapControl.class);  // Unwanted logging happens here

Обычно это работает, но, к сожалению, не всегда, т. е. поведение не является детерминированным.

Есть идеи? Спасибо!


person MonitorLizard    schedule 12.10.2015    source источник
comment
Кроме того, я обнаружил, что Logger.getLogger("javax.enterprise.resource.webservices.jaxws.server").getLevel() возвращает null в тех случаях, когда происходит нежелательное ведение журнала.   -  person MonitorLizard    schedule 12.10.2015
comment
Похоже, вы столкнулись с сборкой мусора из регистраторов. регистратор мыла со статической конечной ссылкой? В противном случае вы можете добавить запись в свой файл logging.properties, чтобы контролировать уровень по требованию.   -  person jmehrens    schedule 14.10.2015
comment
Идеально! Именно в этом была проблема. Я мог бы воспроизвести его с явным запуском GC. Спасибо! Сохранение ссылки на регистратор надежно решает проблему для меня.   -  person MonitorLizard    schedule 16.10.2015


Ответы (1)


Похоже, вы столкнулись с сборщиком мусора. Закрепите регистратор мыла со статической конечной ссылкой или вы можете добавить запись в свой файл logging.properties, чтобы контролировать уровень по требованию. Каждый раз, когда регистратор воссоздается, уровень журнала считывается из файла свойств.

person jmehrens    schedule 16.10.2015