2

AnkoLogger在我的Android项目中使用,但它只在日志级别为 时有效info,其他级别不记录任何内容,但内置AndroidLog运行良好。我可以做些什么来AnkoLogger代替内置的?

4

2 回答 2

1

这里的问题似乎是Log.isLoggable默认情况下仅记录级别INFO及以上的使用。

anko 项目中出现了一个问题,现已关闭:

AnkoLoggerLog.isLoggable()在默认情况下忽略 VERBOSE 和DEBUG日志级别的幕后使用。您可以在此处阅读更多相关信息: https ://mobiarch.wordpress.com/2012/05/11/proper-logging-from-android-application/ 。

于 2016-01-09T12:46:10.213 回答
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是你的类名。如果您希望此检查成功,则需要一个 prop className = VERBOSE

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

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

于 2019-10-15T21:47:56.147 回答