我AnkoLogger
在我的Android项目中使用,但它只在日志级别为 时有效info
,其他级别不记录任何内容,但内置AndroidLog
运行良好。我可以做些什么来AnkoLogger
代替内置的?
问问题
745 次
2 回答
1
这里的问题似乎是Log.isLoggable
默认情况下仅记录级别INFO
及以上的使用。
anko 项目中出现了一个问题,现已关闭:
AnkoLogger
Log.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 回答