1

我正在使用木材在我的项目中记录日志。我在课堂上DebugTree为我的应用程序种植了一个。Application我能够使用木材来记录我的错误和异常。

我也有一个要在这个项目中使用的库模块。在库模块中,我将 Timber 添加为与我的项目相同的 gradle 依赖项:app。我希望能够在库模块上设置一个标志以启用/禁用其日志记录,以便我可以将库日志与主:app项目分开。就像是:

LibraryModule().setDeveloperMode(true)

截至目前,我所有的日志都被打印出来了。如果我在图书馆种一棵新树,这将为所有图书馆日志打印两次日志。

我也看过这个答案:How to tell Timber which log call is for which Tree? 但是,这不是我想要的,我不想为库模块保留日志记录优先级。

我希望我能做这样的事情,但除非树被种植,它不会打印任何东西。正确的?但是,如果我种植它,由于多棵树,原木会重复。

val libraryTree: Timber.Tree = Timber.DebugTree()
libraryTree.d("library-logs")

如何为我的图书馆启用/禁用 Timber 日志?

4

1 回答 1

0

实际上你不需要在图书馆本身处理种植。只需将其留给应用程序开发人员添加他想要的树版本,您就不会有重复的日志。

只需记录您想要记录的内容并将种植留给图书馆的用户。

如果你想在库中处理它,你可以这样做:

class CustomLogTree(val printLogs: Boolean) : Timber.DebugTree() {

override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
    if (!printLogs) {
        return
    }
    super.log(priority, tag, message, t)
}

并公开更改图书馆消费者“printLogs”标志的功能。

另外为了防止应用程序植入日志打印库相关信息,调用(日志将在应用程序本身内部工作):

Timber.uprootAll()
于 2020-05-05T09:40:10.607 回答