#java #websphere #websphere-liberty #open-liberty
#java #websphere #websphere-liberty #открыть-liberty
Вопрос:
Я хочу просмотреть журналы трассировки класса HttpURLConnection, чтобы устранить проблему, возникающую при вызове удаленной службы.
Я попытался настроить трассировку в server.xml , как показано ниже.
<logging logDirectory="logs" copySystemStreams="true" consoleLogLevel="INFO" traceFileName="trace.log" traceSpecification="sun.net.www.protocol.http.HttpURLConnection=finest" maxFileSize="50" maxFiles="50"/>
Когда сервер запускается, он показывает мою конфигурацию в trace.specification.
********************************************************************************
product = WebSphere Application Server 20.0.0.9 (wlp-1.0.44.cl200920200820-0913)
wlp.install.dir = /Users/ilam/liberty20.9/wlp/
java.home = /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/jre
java.version = 1.8.0_261
java.runtime = Java(TM) SE Runtime Environment (1.8.0_261-b12)
os = Mac OS X (10.15.7; x86_64) (en_GB)
process = 54509@MYMACHINE
trace.specification = *=info:sun.net.www.protocol.http.HttpURLConnection=finest
********************************************************************************
Но я вижу
The configured trace state included the following specifications that do not match any loggers currently registered in the server: sun.net.www.protocol.http.HttpURLConnection=all Ignore this message if the trace specifications sun.net.www.protocol.http.HttpURLConnection=all are valid.
И в трассировке нет журналов из класса HttpURLConnection.файл журнала. Итак, как мне настроить это
Ответ №1:
За https://openliberty.io/docs/20.0.0.11/log-trace-configuration.html , Liberty объединяет содержимое, которое вы записываете в java.util.logging, в свои файлы журналов (сообщения.журнал и trace.log).
Если что-то, что, по вашему мнению, имеет инструментарий трассировки JUL, не отображается в трассировке Liberty, несмотря на соответствующую настройку traceSpecification
, вам может потребоваться перепроверить, чтобы убедиться, что регистратор JUL действительно зарегистрирован. Вырезанное / вставленное сообщение журнала показывает, что, по крайней мере, на момент обработки спецификации трассировки указанный регистратор не был зарегистрирован в LogManager.
Один из способов проверить, какие регистраторы зарегистрированы, — использовать LoggingMXBean (https://docs.oracle.com/javase/8/docs/api/java/util/logging/LoggingMXBean.html ), чтобы получить имена регистраторов, чтобы узнать, действительно ли существует регистратор, который они пытаются включить, когда сервер запущен.
Вы можете получить доступ к LoggingMXBean из jconsole из вашего каталога jre /bin.
Если искомого регистратора нет в списке, это может быть связано с тем, что класс использует другое имя регистратора (использование имени пакета и класса в качестве имени регистратора — это просто соглашение), или, возможно, класс, использующий регистратор, еще не достиг точкив коде, который регистрирует его регистратор (хотя довольно часто регистраторы JUL регистрируются при инициализации класса).
Ответ №2:
Трассировка Liberty работает для кода Liberty, но класс, который вы хотите отслеживать, является частью JVM, поэтому вам нужно будет отслеживать его по-другому. Как именно, вероятно, зависит от JVM, но это может сработать: https://www.rgagnon.com/javadetails/java-debug-HttpURLConnection-problem.html