在带有自动标记的单独模块中使用木材
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 姓名一起记录。
我想在单独的模块中使用 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 姓名一起记录。