【问题标题】:how to configure kotlin-logging logger如何配置 kotlin-logging 记录器
【发布时间】:2017-08-26 02:19:51
【问题描述】:

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

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

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

-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG

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

谁能帮帮我?

【问题讨论】:

  • 设置日志级别是按实现完成的。 Kotlin-logging 和 slf4j 只是底层日志库(log4j 等)的外观。你用的是哪一个?

标签: logging kotlin kotlin-logging


【解决方案1】:

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

通过查看slf4jLogger 接口,可以看到它的所有关卡都有isLevelEnabled(),但没有setter。因此,设置级别是特定于实现的,它基于您使用的底层日志记录平台。


从您的问题看来,您使用slf4j SimpleLogger 作为slf4j 后面的层。对于SimpleLogger,您只能像已经完成的那样通过属性更改日志级别。 请参阅this question 了解更多信息。

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

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

【讨论】:

  • 我不一定在寻找一种在运行时执行此操作的方法。 Buildtime 对于这个项目来说已经足够了。
  • 嗨,我再次阅读了这个问题,现在我希望它真的能回答这个问题。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我在 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(作为程序选项之一)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2018-10-12
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 2016-12-09
      • 2018-06-25
      相关资源
      最近更新 更多