按标签过滤日志

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))