日志

任何高质量的 Android 应用程序都会通过应用程序日志跟踪它正在做什么。这些日志允许开发人员轻松调试帮助,以诊断应用程序正在发生的事情。可在此处找到完整的 Android 文档,但摘要如下:

基本日志记录

Log 类是编写开发人员日志的主要来源,通过指定 tagmessage。标记是你可以用来过滤日志消息的标识,以标识来自你的特定活动的行。只需致电

Log.v(String tag, String msg);

并且 Android 系统会向 logcat 写一条消息:

07-28 12:00:00.759 24812-24839/my.packagename V/MyAnimator: Some log messages
 └ time stamp             |  app.package┘     |    └ any tag  |
     process & thread ids ┘          log level┘               └ the log message

提示:
注意进程 ID 和线程 ID。如果它们是相同的 - 日志来自主/ UI 线程!

可以使用任何标记,但通常使用类名作为标记:

public static final String tag = MyAnimator.class.getSimpleName();

日志级别

Android 记录器有 6 个不同的级别,每个级别都有一定的用途:

  • ERRORLog.e()
    • 用于表示严重失败,这是投掷 Exception 时打印的等级。
  • WARNLog.w()
    • 用于指示警告,主要用于可恢复的故障
  • INFOLog.i()
    • 用于指示有关应用程序状态的更高级别信息
  • DEBUGLog.d()
    • 用于记录在调试应用程序时有用的信息,但在运行应用程序时会妨碍这些信息
  • VERBOSELog.v()
    • 用于记录反映应用程序状态的小细节的信息
  • ASSERTLog.wtf()
    • 用于记录有关不应发生的情况的信息。
    • wtf 代表多么可怕的失败

记录的动机

日志记录的动机是通过浏览应用程序中的事件链来轻松查找错误,警告和其他信息。例如,假设一个应用程序从文本文件中读取行,但错误地认为该文件永远不会为空。日志跟踪(不记录的应用程序)看起来像这样:

E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

接下来是一堆最终导致违规行的堆栈跟踪,其中通过调试器逐步执行最终会导致问题

但是,启用了日志记录的应用程序的日志跟踪可能如下所示:

V/MyApplication: Looking for file myFile.txt on the SD card
D/MyApplication: Found file myFile.txt at path <path>
V/MyApplication: Opening file myFile.txt
D/MyApplication: Finished reading myFile.txt, found 0 lines
V/MyApplication: Closing file myFile.txt
...
E/MyApplication: Process: com.example.myapplication, PID: 25788
                          com.example.SomeRandomException: Expected string, got 'null' instead

快速浏览日志,很明显文件是空的。

记录时需要考虑的事项:

虽然日志记录是一个强大的工具,它允许 Android 开发人员更深入地了解其应用程序的内部工作,但日志记录确实存在一些缺点。

日志可读性:

Android 应用程序通常会同时运行多个日志。因此,每个日志都易于阅读并且仅包含相关的必要信息非常重要。

性能:

记录确实需要少量的系统资源。一般而言,这并不值得关注,但是,如果过度使用,日志记录可能会对应用程序性能产生负面影响。

安全:

最近,Google Play 市场中添加了几个 Android 应用程序,允许用户查看所有正在运行的应用程序的日志。这种非预期的数据显示可以允许用户查看机密信息。根据经验,将应用程序发布到市场之前,请始终删除包含非公开数据的日志。

结论:

日志记录是 Android 应用程序的重要组成部分,因为它为开发人员提供了强大功能。创建有用的日志跟踪的能力是软件开发中最具挑战性的方面之一,但 Android 的 Log 类有助于使其更容易。

有关更多文档和示例,请访问 Logging 并使用 Logcat