三亚兼职网站,深圳建站网站网站公司,纹身网站设计,wordpress媒体库一直转圈前言
主要还是辟谣之前的网上的用法#xff0c;当然也会给出最终的使用方法。这可是Kotlin#xff0c;关Slf4j何事#xff01;#xff1f;
辟谣内容#xff1a;创建注解来解决这个问题
例如#xff1a;
Target(AnnotationTarget.CLASS)
Retention(AnnotationRetentio…前言
主要还是辟谣之前的网上的用法当然也会给出最终的使用方法。这可是Kotlin关Slf4j何事
辟谣内容创建注解来解决这个问题
例如
Target(AnnotationTarget.CLASS)
Retention(AnnotationRetention.RUNTIME)
annotation class Log {companion object {inline var reified T T.log: Loggerget() LoggerFactory.getLogger(T::class.java)set(value) {}}
}
为什么没用
然后我看了一下StackOverflow结果这个方法的作者说 也有人问为什么不能这么做作者的回答是T.log:Logger方法会在全局加载使用注解完全是多余的
我试了一下果真如此哦…… 其中KLog就是代码里的Log然后我把KLog去掉 毛线啊啥事都没发生果然如作者所说这个注解完全是多余的……我也是蚌埠住了难怪作者会说不要用这个方法了。
解决方法
这可是Kotlin有扩展方法要什么注解为什么非要局限于注解了我不要不就完事了。
创建一个LogExtend.kt类
加入以下代码
package 你的package地址import org.slf4j.Logger
import org.slf4j.LoggerFactoryfun T : Any T.logger(): Logger {return LoggerFactory.getLogger(this.javaClass)
}fun T : Any T.logError(e: Throwable) {logger().error(, e)
}fun T : Any T.logError(msg: String) {logger().error(msg)
}fun T : Any T.logInfo(msg:String) {logger().info(msg)
}fun T : Any T.logDebug(msg:String) {logger().debug(msg)
}
使用方法 直接调用logInfo即可由于Kotlin支持字符串模板log.info主要一个string入参的方法即可其他方法实则都已经包括进去了。这些可太好了连log.info的点都省去了手动狗头。
缺点当然也有这就是所有的类都可以用logInfo这个方法了但是这个问题确实也没法解决啊。
实现效果