kotlin
Kotlin的轻量级乘法记录框架,写在。
方便且性能的伐木外墙。
呼叫日志方法,而无需检查是否启用了相应的日志级别
logger.debug { \" Some $expensive message! \" }
在幕后,如果不启用调试,则昂贵的消息不会评估:
// This is what happens when you write the above ^^^ if (logger.isDebugEnabled) logger.debug( \" Some $expensive message! \" )
定义记录器,而无明确指定类名称
// Place definition above class declaration to make field static private val logger = KotlinLogging .logger {}
幕后val logger将在类上创建类/文件名:
// This is what happens when you write the above ^^^ val logger = LoggerFactory .getLogger( \" package.ClassName \" )
kotlin风格中的日志异常
// exception as first parameter with message as lambda logger.error(exception) { \" a $fancy message about the $exception \" }
流利的登录以kotlin风格
logger.atWarn {
message = \" foo $bar \"
cause = exception
payload = buildMap(capacity = 3 ) {
put( \" foo \" , 1 )
put( \" bar \" , \" x \" )
put( \" obj \" , Pair ( 2 , 3 ))
}
}
入门
import io.github.oshai.kotlinlogging.KotlinLogging private val logger = KotlinLogging .logger {} class FooWithLogging { val message = \" world \" fun bar () { logger.debug { \" hello $message \" } } }
下载
重要说明: Kotlin-Logging取决于Slf4J-API(在JVM伪像中)。在运行时,还需要依赖日志记录实现。有关操作配置SLF4J的更多详细信息。以及在java a guide-goging-in-java中的出色详细解释。
在版本5中,用户还应提供SLF4J-API依赖性。
简而言之,如果您只想将语句记录到Stdout,则可以添加以下依赖关系: org.slf4j:slf4j-simple:2.0.3 。
< dependency > < groupId >io.github.oshai</ groupId > < artifactId >kotlin-logging-jvm</ artifactId > < version >7.0.3</ version > </ dependency >
请参阅kotlin-logging-maven中的完整示例。
gradle
implementation \' io.github.oshai:kotlin-logging-jvm:7.0.3 \'
或者,从Github或Maven-Central下载罐子。
乘数
提供了实验性乘法支持。
有关Wiki的更多信息,以及第21#45号问题。
概述
在看到了许多问题之类的问题之类的问题之类的方法和记录仪的最佳实践之后,似乎应该有一个在Kotlin中登录和获取记录器的标准。 Kotlin-Loging为Kotlin类使用的SLF4J-API提供了包装,具有以下优点:
- 无需编写记录器和类名称名称样板代码。
- 使用lambda expression
{}使用懒惰的字符串记录消息的直接方法。 - 仍然可以使用所有先前的SLF4J实现。
版本5与以前的版本
版本5与以前的版本不兼容(v.3,v.2,v.1)。组ID(Maven)和软件包名称更改。可以同时使用版本5和以前的版本并排使用,因此旧版本中的某些代码和一些新版本。也可以使用旧版本并使用新版本(以及反之亦然)。
从这个意义上讲,这是一种全新的依赖。
主要变化是:
- Maven Group ID从
io.github.microutils>io.github.oshai更改。 - 根包从
mu>io.github.oshai.kotlinlogging更改。 - 不再提供SLF4J依赖关系(用户必须提供)。这意味着> = 5.x可以与SLF4J 1或2一起使用。
- 乘法层次结构的变化可能会破坏兼容性。
问题#264和更改日志中的更多详细信息
谁在使用它
- https://www.**jet*brains.com/youtrack/(https://www.**jet*brains.com/help/youtrack/youtrack/standalone/tandy-party-party-party-software-software-used-by-yby-youtrack.html)
- https://*git*h*ub.com/dius/pact-jvm
- https://g**ithub.com*/asynkronit/protoactor-kotlin
- https://gi*thub.*com*/square/misk
- https://gi*th*ub.co*m/openrndr/openrndr
- https://github**.*com/jetbrains/xodus
还有更多…(上面添加您的名字)
常问问题
- 为什么不使用普通SLF4J? Kotlin-Logging具有更好的本地Kotlin支持。它添加了更多功能,并启用了更少的样板代码。
- 是否支持所有SLF4J实现(标记,参数等)?是的。
- 位置记录是否可能?是的,在Kotlin-Loging 1.4中添加了位置意识。
- 当我进行
logger.debug时,我的Intellij Idea run Console不会显示任何输出。您知道如何将控制台记录器设置为调试或跟踪级别吗?这是一个IDE设置,还是可以在“ klogging”()的调用中设置它?设置日志级别是按实现完成的。 Kotlin-Logging和SLF4J只是基础日志记录lib(Log4J,logback等)的外墙。 - 我可以访问实际的记录仪吗?在可用的平台中,通过
DelegatingKLogger.underlyingLogger属性。
用法
- 有关更多示例,请参见Wiki。
可以配置Intellij Live模板。对于文件级记录器配置以下内容:
- 文本模板:
private val logger = io.github.oshai.kotlinlogging.KotlinLogging.logger {}。 - 适用于
Kotlin: top-level。
支持
- 在此处打开一个问题:https://github.com/oshai/kotlin-logging/issues
- 用Kotlin-Logging标签在Stackoverflow中提出一个问题。
- 在Slack频道上聊天:https://kotlinlang.sl***ack.com/messages/kotlin-logging
- 在电报频道上聊天:https://t.me/klogging
更多链接
- https://mediu*m.c*om*/@ohadshai/logging-in-kotlin-95A4E76388F2
- Kotlin-Logging与Android的Ankologger
- 如何出版Kotlin-Logging
- kotlin logging没有大惊小怪
- Dropwizard + Kotlin =项目Kronslott
- 登录Kotlin – 正确的方法
- https://bednarek.w*rocl*a*w.pl/log4j-in-kotlin/
- https://***jaxenter.com/kotlin-logging-168814.html
贡献
任何贡献都将不胜感激。
请参阅:https://github.com/oshai/kotlin-logging/graphs/contributors中的贡献者列表
欢迎拉动请求!请参阅https://gi**thub.com*/oshai/kotlin-logging/blob/master/contributing.md中的说明。
用★显示您的❤
