Как настроить 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")