1

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

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

例如,我有一个带有方法的日志记录类Logger.kt

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

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

所以我的问题是,我怎样才能通过这种方法自动传递调用类?我不想添加像“TAG = classname”这样的附加变量,因为在这种情况下我还不如使用普通日志记录。

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

4

1 回答 1

3

您可以使用扩展功能,例如:

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

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

this.javaClass.simpleName用作 TAG,并将使用实际的调用者类名进行记录。

于 2020-07-07T04:10:32.167 回答