Kotlin版LogUtil

来源:互联网 发布:js遍历a标签 编辑:程序博客网 时间:2024/05/22 07:14

最近在学习Kotlin,把一些常用的java版本的Util重新用Kotlin写了一遍,算是一边学习,一边做些轮子吧。
运行效果如图所示:
这里写图片描述

package sunbufu.mykotlin.utilimport android.util.Log/** * 日志工具类 * @author sunbufu */class LogUtil {    companion object {        /**Log的前缀*/        var tagPrefix: String = "sunbufuLogUtil"        /**日志是否打印的标识*/        val flag: Boolean = true;        fun d(a: Any) = log("d", a)        fun i(a: Any) = log("i", a)        fun w(a: Any) = log("w", a)        fun e(a: Any) = log("e", a)        /**         * @param type   级别         * @param any   打印的对象         */        private fun log(type: String, any: Any) {            if (!flag) return            var msg = any.toString()            var tag = getTag(getCallerStackTraceElement())            when (type) {                "d" -> Log.d(tag, msg)                "i" -> Log.i(tag, msg)                "w" -> Log.w(tag, msg)                "e" -> Log.e(tag, msg)            }        }        /**生成TAG*/        private fun getTag(element: StackTraceElement): String {            //获取类名(去掉包名)            var callerClazzName: String = element.className            callerClazzName = callerClazzName.substring(callerClazzName.lastIndexOf(".") + 1)            //生成TAG            return "$tagPrefix:$callerClazzName.${element.methodName}(${element.lineNumber})"        }        /**获取函数堆栈*/        private fun getCallerStackTraceElement(): StackTraceElement = Thread.currentThread().getStackTrace()[5]    }}