16

为了在我的 Kotlin 项目中进行日志记录,我正在使用kotlin-logging,它非常好用,但是我错过了一个非常重要的点:如何配置记录器的日志级别?

默认情况下,它设置为信息,我想将其设置为调试。由于 Github 页面上没有任何内容,也没有任何方法可以以编程方式设置级别,我查看了 slf4j,因为 kotlin-logging 是围绕它的包装器。

显然我必须像这样设置一个系统属性:

-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG

但是我不知道如何在 Kotlin 中做到这一点。

任何人都可以帮助我吗?

4

3 回答 3

12

我们没有办法从 slf4j api 更改日志级别,我们需要依赖实现

通过查看 的Logger界面slf4j,您可以看到它具有isLevelEnabled()所有级别,但没有设置器。因此,设置级别是特定于实现的,它基于您使用的底层日志记录平台。


从您的问题来看,您似乎将其slf4j SimpleLogger用作slf4j. 对于SimpleLogger,您只能像已经完成的那样通过属性更改日志级别。有关更多信息,请参阅此问题

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

请注意,一旦创建了记录器,就无法更改日志级别。如果您需要动态更改日志记录级别,您可能希望将 log4j 与 SLF4J 一起使用。

于 2017-03-31T18:39:30.003 回答
4

我在Spring Boot应用程序中使用 kotlin-logging。

什么有效

运行应用程序

-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(作为程序选项之一)
于 2020-04-27T18:29:10.190 回答
1

如果您kotlin-logging在 Android 上使用 using,简单的答案是:只需使用slf4j-handroid

它是 (最近已弃用!) 的一个简单分支slf4j-android,但它不会继承令人愉快的行为,例如要求设置系统属性以便您可以查看调试日志。

于 2018-01-25T22:08:58.293 回答