Kotlin - 2. Kotlin中日志的使用方法
1 引言
想必学过Java的人都知道一个@Slf4j使用得多么的舒服:
1 import org.slf4j.Logger 2 import org.slf4j.LoggerFactory 3 4 @Target(AnnotationTarget.CLASS) 5 @Retention(AnnotationRetention.RUNTIME) 6 annotation class Slf4j{ 7 companion object{ 8 valT.log: Logger 9 inline get() = LoggerFactory.getLogger(T::class.java) 10 } 11 }
逐行解释如下:
@Target:与Java中的@Target类似,注解的目标,这里是类@Retention:与Java中的@Retention类似,运行时保留annotation class:声明一个注解companion object:伴生对象val:声明一个T.log:Logger Logger类型的泛型对象inline get() = LoggerFactory.getLogger(T::class.java):声明getter为内联,声明为内联才能使用T,这样才能传递给后面的getLogger,T::class.java相当于Java中的T.class,也就是getLogger(T::class.java)相当于getLogger(SomeClass.class)
使用很简单:
io.github.microutils kotlin-logging-jvm 2.0.6
Gradle:
private val logger = KotlinLogging.logger {}
使用时,直接调用其中的info/debug/error等即可:
import mu.KotlinLogging import org.slf4j.Logger @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.RUNTIME) annotation class Slf4j{ companion object{ valT.log: Logger inline get() = KotlinLogging.logger{T::class.java.name} } }
使用方法同上,直接加一个@Slf4j即可使用。
5 完整Demo参考
- Github
- 码云
- CODE.CHINA
6 参考
1、kotlin-logging
2、Kotlin官网-内联函数