我在我的Android项目中使用AnkoLogger
,但它仅在日志级别为info
时有效,其他级别不记录,但内置Android Log
效果很好。如何使用AnkoLogger
替换内置的?{/ p>
答案 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
。
评论: 除非我弄错了,否则您必须对要查看详细日志的每个类都这样做。对于一个命令为每个类批量设置道具,我没有任何解决方案。重新实现自己的记录器类可能会更容易,但这是另一个问题。