Как настроить kotlin-logging logger

Для целей ведения журнала в моем проекте Kotlin я использую kotlin-logging, который очень удобно использовать, однако я упускаю очень важный момент: как я могу настроить уровень ведения журнала в регистраторе?

По умолчанию это установлено в информацию, и я хотел бы установить его для отладки. Так как на странице Github ничего об этом нет, и нет никакого способа для программной установки уровня, я взглянул на slf4j, так как kotlin-logging является оберткой вокруг этого.

По-видимому, я должен установить системное свойство следующим образом:

-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG

Однако я не знаю, как это сделать в Котлине.

Кто-нибудь может мне помочь?

4 ответа

Решение

У нас нет способа изменить уровень журнала от slf4j api, и нам нужно полагаться на реализацию

Глядя на Logger интерфейс slf4j Вы можете видеть, что это имеет isLevelEnabled() для всех уровней, но не сеттер. Поэтому установка уровня зависит от конкретной реализации и зависит от используемой вами платформы ведения журнала.


От вашего вопроса похоже, что вы используете slf4j SimpleLogger как слой позади slf4j, За SimpleLogger, вы можете изменить уровень журнала только через свойства, как вы уже сделали. Смотрите этот вопрос для получения дополнительной информации.

System.setProperty(org.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "TRACE");

Обратите внимание, что после создания регистратора уровень журнала не может быть изменен. Если вам нужно динамически изменить уровень ведения журнала, вы можете использовать log4j с SLF4J.

Я использую kotlin-logging в приложении Spring Boot.

Что сработало

Запустить приложение с

-Dlogging.level.com.mydomain.myapp=DEBUG

(Заменить com.mydomain.myapp с желаемым пространством имен пакета или root для всех.)

В качестве альтернативы вы можете добавить свойство в файл свойств приложения.

logging.level.com.mydomain.myapp = DEBUG

Что не сработало

  • -Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG
  • -Dorg.slf4j.simplelogger.defaultlog=DEBUG
  • --debug (как одна из опций программы)

Если вы используете kotlin-logging на Android простой ответ: просто используйте slf4j-handroid.

Это простая ветвь (недавно устарела!) slf4j-android, но который не наследует восхитительного поведения, такого как требование настройки системных свойств, чтобы вы могли видеть ваши журналы отладки.

Если вы не можете получить доступorg.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, похоже, это работает сorg.slf4j:slf4j-simple:2.0.6

          System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "TRACE")
Другие вопросы по тегам