为了在我的 Kotlin 项目中进行日志记录,我正在使用 kotlin 日志记录,这非常好用,但我缺少一个非常核心的点:如何配置记录器的日志级别?
默认情况下,它设置为信息,我想将其设置为调试。由于 Github 页面上没有任何内容,也没有任何方法可以以编程方式设置级别,因此我研究了 slf4j,因为 kotlin-logging 是它的包装器。
显然我必须像这样设置一个系统属性:
-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG
但是我不知道如何在 Kotlin 中执行此操作。
有人可以帮助我吗?
我们没有办法从 slf4j api 更改日志级别,我们需要依靠实现
通过查看slf4j
的Logger
界面,您可以看到它对所有级别都有isLevelEnabled()
,但没有一个二传手。因此,设置级别是特定于实现的,它基于您使用的基础日志记录平台。
从您的问题来看,您似乎使用 slf4j SimpleLogger
作为slf4j
背后的层。对于SimpleLogger
,您只能像已经完成的那样通过属性更改日志级别。有关详细信息,请参阅此问题。
System.setProperty(org.slf4j.impl.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "TRACE");
请注意,创建记录器后,无法更改日志级别。如果需要动态更改日志记录级别,则可能需要将 log4j 与 SLF4J 一起使用。
我在 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
(作为程序选项之一(
如果你在Android上使用kotlin-logging
,简单的答案是:只需使用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")