Android Studio 如何添加和查看日志

前面的小节我们介绍了开发者选项,从本小结我们学习如何使用添加和查看日志。

[toc]

1. 添加日志

Android 通过 Log 类,我们可以创建日志消息,这些消息会显示在 Logcat 中。一般来说,我们应使用以下日志方法,这些方法按照优先级从高到低(或者从最简略到最详细)的顺序列示:

  • Log.e(String, String)(错误)

  • Log.w(String, String)(警告)

  • Log.i(String, String)(信息)

  • Log.d(String, String)(调试)

  • Log.v(String, String)(详细)

除开发期间外,其他任何时候都绝不应将详细日志编译到我们的应用中。虽然会编译调试日志,但会在运行时将其去掉,而错误、警告和信息日志会始终保留。

对于每种日志方法,第一个参数都应是唯一标记,第二个参数都应是消息。系统日志消息的标记是一个简短的字符串,指示消息所源自的系统组件(例如 ActivityManager)。标记可以是我们认为有用的任何字符串,例如当前类的名称。

一种比较好的做法是,在要用于第一个参数的类中声明 TAG 常量。例如,我们可以按如下方式创建一条信息日志消息:

private static final String TAG = "MyActivity";
...
Log.i(TAG, "MyClass.getView() — get item number " + position);

Tips:长度超过 23 个字符的标记名称在 logcat 输出中会被截断。

2. 查看日志

Android Studio 中的 Logcat 窗口会显示系统消息,例如在进行垃圾回收时显示的消息,以及使用 Log 类添加到应用的消息。此窗口可以实时显示消息,也可以保留历史记录,因此我们可以查看较早的消息。

2.1 Logcat 窗口

Logcat 窗口会显示所选应用(从窗口顶部的下拉列表中选择)的日志消息,如下图所示。

Logcat 工具栏中提供以下按钮:

  1. Clear logcat:点击此按钮可以清除显示的日志;

  2. Scroll to the end:点击此按钮可以跳转到日志底部并查看最新的日志消息。如果我们先点击此按钮,然后点击日志中的某一行,则视图会在相应位置暂停滚动;

  3. Up the stack traceDown the stack trace:点击相应按钮可以在日志的堆栈轨迹中进行上下导航,从而选择输出的异常中显示的后续文件名(以及在编辑器中查看相应行号)。这与我们在日志中点击某个文件名时的行为相同;

  4. Use soft wraps:点击此按钮可以启用换行并防止水平滚动(尽管所有非间断字符串仍然需要进行水平滚动);

  5. Print:点击此按钮可以输出 logcat 消息。在显示的对话框中选择输出偏好设置后,我们还可以选择将其保存为 PDF 格式;

  6. Restart:点击此按钮可以清除日志并重启 logcat。与 Clear logcat 按钮不同,此按钮可以恢复并显示之前的日志消息,因此当 Logcat 无响应而我们又不想失去日志消息时,此按钮是最有用的;

  7. Logcat header:点击此按钮可以打开 Configure Logcat Header 对话框,在该对话框中,我们可以自定义各个 logcat 消息的外观,例如是否显示日期和时间;

  8. Screen capture:点击此按钮可以截取屏幕截图;

  9. Screen record:点击此按钮可以录制设备屏幕的视频(时长不超过 3 分钟)。

2.2 设置日志级别

我们可以通过设置日志级别来控制 logcat 中显示的消息数量。我们可以显示所有消息,也可以仅显示指示最严重情况的消息。无论日志级别设置如何,logcat 都会继续收集所有消息。此设置仅决定 logcat 显示什么。

在 Log level 菜单中,选择以下值之一:

  • Verbose:显示所有日志消息(默认值)。

  • Debug:显示仅在开发期间有用的调试日志消息,以及此列表中较低的消息级别。

  • Info:显示常规使用情况的预期日志消息,以及此列表中较低的消息级别。

  • Warn:显示尚不是错误的潜在问题,以及此列表中较低的消息级别。

  • Error:显示已经引发错误的问题,以及此列表中较低的消息级别。

  • Assert:显示开发者预计绝不会发生的问题。

2.3 搜索 logcat 消息

要搜索 logcat 中当前显示的消息,请执行以下操作:

  1. 如果我们想要使用正则表达式搜索模式,请选择 Regex。

  2. 在搜索字段中输入字符序列。Logcat 输出会相应地显示更改。

  3. 按 Enter 键以在此会话期间将搜索字符串保存到菜单中。

  4. 要重复搜索,请从搜索菜单中选择。根据需要选择或取消选择 Regex。

2.4 过滤 logcat 消息

将日志输出减少至可管理水平的一种方法是,使用过滤器施加限制。

要定义并应用过滤器,请执行以下操作:

  1. 在过滤器菜单中,选择一个过滤选项:

    • Show only selected application:仅显示通过应用代码生成的消息(默认选项)。Logcat 使用正在运行的应用的 PID 来过滤日志消息。

    • No Filters:不应用过滤器。无论我们选择哪个进程,logcat 都会显示设备中的所有日志消息。

    • Edit Filter Configuration:创建或修改自定义过滤器。例如,我们可以创建一个过滤器,以同时查看两个应用中的日志消息。

  2. 如果选择了 Edit Filter Configuration,还需要创建或修改过滤器,在 Create New Logcat Filter 对话框中指定过滤器参数:

    • Filter Name:输入要设定的过滤器的名称,或者从左侧窗格中进行选择以修改现有过滤器。名称只能包含小写字符、下划线和数字。

    • Log Tag:(可选)指定标记。

    • Log Message:(可选)指定日志消息文本。

    • Package Name:(可选)指定软件包名称。

    • PID:(可选)指定进程 ID。如需了解详情,请参阅 Logcat 消息格式。

    • Log Level:(可选)选择日志级别。

    • Regex:选择此选项可以为相应参数使用正则表达式语法。

如果我们认为并没有看到想要检查的日志消息,请尝试选择 No filters 并搜索特定日志消息。

3. 小结

本节课程我们主要学习了添加日志和查看日志。本节课程的重点如下:

  • 掌握如何添加日志;
  • 掌握如何查看日志。