Вход в slf4j с помощью jdk - как включить отладку? - PullRequest
22 голосов
/ 25 ноября 2010

По умолчанию slf4j при использовании с jdk ( slf4j-jdk14-1.6.1.jar ) не регистрирует сообщения отладки. Как мне их включить?

Я не могу найти информацию ни в официальных документах, в Интернете, ни здесь, как включить ее.

Я нашел некоторую информацию о (хотя и не удалось) создании файла в% JDK_HOME% / lib и определении его уровня в файле конфигурации. Однако я хотел бы определить уровень во время компиляции / выполнения, чтобы я мог как запускать, так и отлаживать свое приложение из своей IDE с разными уровнями ведения журнала.

Нет ли какой-либо переменной окружения, которую я могу установить, или VM arg?

Ответы [ 3 ]

23 голосов
/ 25 ноября 2010

Почему, по-вашему, он не регистрирует сообщения отладки?

Если вы имеете в виду, что ваши log.debug(String) вызовы журналирования не заканчиваются в java.util.logging файлах журнала, то, я думаю, вам нужно настроить файл конфигурации logging.properties, чтобы разрешить сообщения журнала на уровне FINE.

Если вы не хотите связываться с глобальным %JRE_HOME%/lib/logging.properties, то вы можете просто ввести -Djava.util.logging.config.file=logging.properties в командной строке - это заставит систему ведения журнала искать этот файл конфигурации в текущем каталоге.

Или используйте другой (программный) способ настройки java.util.logging, см. Учебник ниже.

Это не имеет ничего общего с настройкой SLF4J; на самом деле, SLF4J не имеет никакой конфигурации, все настроено путем простой замены файлов JAR.


Для справки:

9 голосов
/ 26 августа 2015

Если вы используете реализацию slf4j SimpleLogger, прочитайте это .

Там вы можете увидеть, что simpleLogger использует INFO в качестве уровня журнала по умолчанию.Вы можете изменить его, используя системное свойство.Это полезно для непроизводственной среды:

static {

    System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "trace");
}
4 голосов
/ 07 июня 2015

Я просто помещаю свой файл logging.properties в файл WEB-INF / classes моих приложений (или использую аргумент командной строки, определенный Neeme Praks, если вы не развертываете в войне), и открывайте файл свойств в eclipseтак что я могу точно настроить его для регистрации пакетов и на уровне, который меня интересует.

В файле logging.properties необходимо убедиться, что и уровень регистратора, и уровень обработчика установлены науровень, который вы хотите.Например, если вы хотите, чтобы ваш вывод выводился на консоль, вам нужно как минимум следующее:

#logging.properties file contents

#Define handlers
handlers=java.util.logging.ConsoleHandler

#Set handler log level
java.util.logging.ConsoleHandler.level=FINE

#Define your logger level
com.company.application.package.package.level=FINE

#Assign your handler to your logger
com.company.application.package.package.handlers=java.util.logging.ConsoleHandler

Вы упомянули slf4j-jdk14-1.6.1.jar.Это обеспечивает привязку slf4j к java.util.logging.Вы должны иметь это в своем classpath, но убедитесь, что в вашем classpath также есть API slf4j (slf4j-api-1.7.12.jar).

Я нахожу пример файла logging.properties в этой ссылке полезно для создания различных регистраторов и обработчиков, чтобы дать вам детальный контроль над тем, какие журналы идут на консоль, а какие журналы идут в файл:.

...