当前位置: 首页 > 工具软件 > Timber > 使用案例 >

使用 Timber 更好地登录 Android

吕飞翼
2023-12-01

如果您正在阅读本文,那么您就是一名 Android 开发人员,或者您正在激励自己成为一名开发人员。在这篇文章中,我们将讨论使用最广泛的库之一,Timber for Android。Timber用于更好地登录 Android。作为一名 Android 开发者,我们在项目中使用了大量的Log语句来生成输出,我们可以使用它来检查所需的输出是否在终端中打印出来。

日志属于 VERBOSE、DEBUG、WARN、INFO、ERROR 等类型,我们应该只限制在开发(暂存)构建而不是生产构建中使用日志。这是因为我们可能会面临暴露某种敏感信息的威胁。现在,让我们看看如何在 Android 项目中使用 Log 的几种方法。

  1. 首先,我们创建一个单例类,
object LogUtil {
    
    fun DEBUG(key: String, message: String) {
        if (BuildConfig.DEBUG)
            Log.d(key, message)
    }
}

这里,LogUtil 是一个 Singleton 类。它包含一个函数 DEBUG(),它只会在应用程序处于调试模式时运行。

要在 Activity 文件中运行它,

class MainActivity : AppCompatActivity() {

    val TAG = MainActivity::class.java.simpleName

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        //It will only run in debug mode
        LogUtil.DEBUG(TAG,"We are in MainActivity")
    }
}

这是在我们的项目中使用 Log 的一种方式。

  1. 第二种方法是,我们直接在我们的文件中使用 Log,例如,
class MainActivity : AppCompatActivity() {

    val TAG = MainActivity::class.java.simpleName

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        Log.d(TAG,"We are in MainActivity")
    }
}

在这个代码片段中,我们直接使用了 Log 并确保我们不在生产中使用它,我们使用 proguard-rules 将其删除,

-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
    public static *** e(...);
}

在这里,我们使用 proguard-rules 删除 Log.d、Log.e 和 Log.e。

从 Release 构建中隐藏 Log 的最后一种方法,手动删除所有 Log 语句。

这可能是一项乏味的任务,对吧?让我花点时间,让我向您介绍Timber。Timber是由 Jake Wharton 制作的开源库。它简化了记录语句的过程。它会自动处理您的调试/发布问题。让我们讨论集成和使用 Timber。在 build.gradle 中添加以下内容:

implementation 'com.jakewharton.timber:timber:4.7.1'

现在,在您的应用程序类中,我们必须初始化木材,

class App : Application() {

    override fun onCreate() {
        super.onCreate()
        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }
    }
}

我们也可以通过扩展Timber.Tree创建自己的树
现在,在您的视图文件中,将您的日志语句替换为,

Timber.e("Your Error Message")
Timber.d("Your Debug Message")

在这里,您可以看到我们没有像上面的示例那样传递TAG,因为 Timber 会自动为您检测类名称。现在,让我们考虑一个示例,我们不想将类名称作为标签传递,而是想要一个自定义标签名称.为此,我们可以使用,

Timber.tag("Mindorks Tag").e("Error Caught By Mindorks");

就是这样,我们如何使用 Timber 来提高我们的Timber 技能。

 类似资料: