смешанное ведение журналов java с slf4j, log4j и java.util.logging - PullRequest
0 голосов
/ 27 апреля 2018

Я запускаю веб-приложение на сервере Weblogic (я не очень знаком с ним).
Через аргументы JVM конфиг log4j передается приложению с уровнем журнала DEBUG. В файле журнала я также могу найти некоторые записи журнала уровня DEBUG.

Пока все хорошо.
Во время отладки я обнаружил несколько вызовов logger.debug (), которых нет в файле журнала.

приватный статический финал org.slf4j.Logger logger = LoggerFactory.getLogger (ActionCtr.class);

Вызов метода определенно выполнен, но в файл ничего не записано.

Если я сделаю шаг во время отладки, я увижу в логгере: org.slf4j.impl.JDK14LoggerAdapter (com.example.application.ActionCtr) "java.util.logging.FileHandler.pattern" -> "% h / java% u.log"

И это приводит меня к некоторым вопросам (поскольку я не могу изменить запущенное приложение):
1) как могло случиться так, что приложение использует смешанные log4j и java.util.logging
2) Как я могу определить, что используется в каких классах?
3) Нет% h / java% u.log (~ / java * .log), поэтому я попытался предоставить файл свойств соответствия java.util.logging, но это ничего не изменило - как я могу определить, откуда запущенный регистратор получил свой конфиг, чтобы правильно его настроить?

1 Ответ

0 голосов
/ 27 апреля 2018

1) как могло случиться так, что приложение использует смешанные log4j и java.util.logging

Любая из этих сред ведения журналов может использоваться приложением напрямую или зависимой библиотекой, которую использует приложение. Не нужно слишком много зависимостей, чтобы в итоге получить кучу автостопщиков каркаса логирования.

В руководстве SLF4J объясняется, как эта платформа ведения журналов затрагивает все эти другие структуры. Вот почему вы видите org.slf4j.impl.JDK14LoggerAdapter.

Как я могу определить, что используется в каких классах?

Если вы имеете в виду прямое использование, вы можете использовать Jdeps или Javap .

как определить, откуда запущенный регистратор получил свою конфигурацию для правильной настройки?

Инструмент JConsole может получить доступ к регистраторам JUL во время выполнения. Он также покажет вам все системные свойства, которые могут включать пути к logging.properties файлам.

Если приложение прагматично настраивает запись в журнал нестандартным способом, то одним из вариантов будет использование java.security.debug с использованием опции access. Запустить приложение в диспетчере безопасности будут все или все необходимые разрешения, но затем включить трассировку доступа.

...