使用AnkoLogger以及“info”以外的级别

时间:2015-11-04 06:20:46

标签: android kotlin anko

我在我的Android项目中使用AnkoLogger,但它仅在日志级别为info时有效,其他级别不记录,但内置Android Log效果很好。如何使用AnkoLogger替换内置的?{/ p>

2 个答案:

答案 0 :(得分:1)

此处的问题似乎是Log.isLoggable的使用,默认情况下只记录INFO级以上。

issue created in anko project现已关闭:

  

AnkoLogger使用忽略VERBOSE的Log.isLoggable()   默认情况下为DEBUG个日志级别。你可以在这里读更多关于它的内容:   https://mobiarch.wordpress.com/2012/05/11/proper-logging-from-android-application/

答案 1 :(得分:0)

很老的线程,但是最近我偶然发现了同样的问题。

这是AnkoLogger的代码

inline fun AnkoLogger.verbose(message: () -> Any?) {
    val tag = loggerTag
    if (Log.isLoggable(tag, Log.VERBOSE)) {
        Log.v(tag, message()?.toString() ?: "null")
    }
}

[...]

val loggerTag: String
    get() = getTag(javaClass)

[...]

private fun getTag(clazz: Class<*>): String {
    val tag = clazz.simpleName
    return if (tag.length <= 23) {
        tag
    } else {
        tag.substring(0, 23)
    }
}

在方法Log.isLoggable(tag, Log.VERBOSE)中,变量tag是您的类名。如果您希望此检查成功,则需要道具className = VERBOSE

解决方案: 要设置此道具,您应该在Android Studio的终端标签(或您使用的任何终端)中运行adb shell setprop log.tag.{className} VERBOSE

评论: 除非我弄错了,否则您必须对要查看详细日志的每个类都这样做。对于一个命令为每个类批量设置道具,我没有任何解决方案。重新实现自己的记录器类可能会更容易,但这是另一个问题。