按标签过滤日志
Timber filter logs by tag
使用 Timber 时,我可以看到自动生成的标签,这很好。但是,我无法真正在代码中访问这些标签。我只能在 Logcat 中看到它们,但我不知道如何过滤它们。
我知道可以仅为调试版本打开日志记录:
if (BuildConfig.DEBUG) {
Timber.plant(DebugTree())
}
但是,这对我来说不是很有用。我尝试这样做:
Timber.plant(Timber.tag("TroublesomeClass"))
但我得到:
java.lang.IllegalArgumentException: Cannot plant Timber into itself.
.. 这对我来说毫无意义。
有什么方法可以通过标签过滤木材日志吗?
提前致谢!
我终于想通了。其实很简单。你只需要像这样子class Timber.DebugTree
:
/**
* Custom Timber logging tree allowing to filter logs by Tag.
*/
class FilteringTimberTree(val allowedTags: List<String> = ArrayList(),
var filteringEnabled: Boolean = true) : Timber.DebugTree() {
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
if(!filteringEnabled || allowedTags.contains(tag)) {
super.log(priority, tag, message, t)
}
}
}
然后在应用中种树 class:
val allowedTags = arrayListOf("Tag1", "Tag2", "Tag3")
Timber.plant(FilteringTimberTree(allowedTags))
使用 Timber 时,我可以看到自动生成的标签,这很好。但是,我无法真正在代码中访问这些标签。我只能在 Logcat 中看到它们,但我不知道如何过滤它们。
我知道可以仅为调试版本打开日志记录:
if (BuildConfig.DEBUG) {
Timber.plant(DebugTree())
}
但是,这对我来说不是很有用。我尝试这样做:
Timber.plant(Timber.tag("TroublesomeClass"))
但我得到:
java.lang.IllegalArgumentException: Cannot plant Timber into itself.
.. 这对我来说毫无意义。
有什么方法可以通过标签过滤木材日志吗?
提前致谢!
我终于想通了。其实很简单。你只需要像这样子class Timber.DebugTree
:
/**
* Custom Timber logging tree allowing to filter logs by Tag.
*/
class FilteringTimberTree(val allowedTags: List<String> = ArrayList(),
var filteringEnabled: Boolean = true) : Timber.DebugTree() {
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
if(!filteringEnabled || allowedTags.contains(tag)) {
super.log(priority, tag, message, t)
}
}
}
然后在应用中种树 class:
val allowedTags = arrayListOf("Tag1", "Tag2", "Tag3")
Timber.plant(FilteringTimberTree(allowedTags))