在带有自动标记的单独模块中使用木材

Using timber in separate module with auto tagging

我想在单独的模块中使用 timber 来处理我的 android 应用程序中的日志记录,以便它可以从任何模块调用并记录到内部文件。

问题是自动标记在单独 class 中使用而不是直接调用木材日志方法时不起作用。

例如,我在 Logger.kt 中有一个日志 class 方法:

fun d(message: String)
{
    Timber.d(message)
}

但是当我从任何地方调用它时,它显然使用日志 class 作为标记而不是 class 调用方法。

所以我的问题是,如何通过此方法自动传递调用 class?我不想添加像 'TAG = classname' 这样的额外变量,因为在那种情况下我还不如使用普通日志记录。

是否可以检索方法的调用 class?还是有更好的方法来进行中央日志记录?主要目的是不必定义 TAG 变量,同时还可以在以后添加文件日志记录。

您可以使用如下扩展函数:

fun Any.logd(message: String){
  Timber.tag(this.javaClass.simpleName).d(message)
}

这样 logd 方法将在任何地方可用,并且不会与默认日志行为冲突。

this.javaClass.simpleName 将用作 TAG,并将与实际呼叫者 class 姓名一起记录。