object LogHelper {
private var isDebuggable: Boolean = false
private val flag = "${LogHelper::class.java.simpleName}.kt"
fun initDebuggable(context: Context) {
context.applicationInfo?.let {
isDebuggable = it.flags and ApplicationInfo.FLAG_DEBUGGABLE > 0
}
}
private fun createLog(log: String): Pair<String, String> {
val element: StackTraceElement = Throwable().stackTrace.first {
flag != it.fileName
}
return Pair(
"[${element.fileName}#${element.methodName}]",
"(${element.fileName}:${element.lineNumber})\n$log"
)
}
fun log(type: Int, msg: String) {
if (!isDebuggable) return
val pair = createLog(msg)
val tag = pair.first
val logMsg = pair.second
when (type) {
Log.VERBOSE -> Log.v(tag, logMsg)
Log.DEBUG -> Log.d(tag, logMsg)
Log.INFO -> Log.i(tag, logMsg)
Log.WARN -> Log.w(tag, logMsg)
Log.ERROR -> Log.e(tag, logMsg)
else -> {
}
}
}
}
fun loge(msg: String) = LogHelper.log(Log.ERROR, msg)
fun logd(msg: String) = LogHelper.log(Log.DEBUG, msg)
可以定位到源文件Log所在位置的LogHelper for Kotlin
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.