Skip to content

Most visited

Recently visited

navigation

使用 Logcat 写入和查看日志

Android Monitor 包含一个可以显示调试消息的 logcat 监视器。logcat 监视器既可以显示系统消息(例如何时发生了垃圾回收),也能显示您可以使用 Log 类添加到应用中的消息。此监视器可以实时显示消息,也可以保留历史记录,以便您查看较旧的消息。

要仅显示感兴趣的信息,您可以创建过滤器,修改消息中显示的信息量,设置优先级,仅显示通过应用代码生成的消息,以及搜索日志。默认情况下,logcat 监视器仅显示与最近运行的应用相关的日志输出。

如果应用引发异常,logcat 监视器会显示一条消息,接着显示关联的堆栈跟踪,堆栈跟踪包含指向该代码的链接。此功能可以帮助您修复错误和改进应用操作。

自 Android Studio 2.2 开始,Run 窗口还会显示当前正在运行的应用的日志消息。请注意,您可以配置 logcat 监视器显示,但无法配置 Run 窗口。

logcat 消息格式

每个 Android 日志消息都有与其关联的标记和优先级。系统日志消息的标记是一个简短的字符串,其表示消息所源自的系统组件(例如,ActivityManager)。用户自定义的标记可以是您认为有用的任意字符串,例如当前类的名称(建议的标记)。您可以在 Log 方法调用中定义名称,例如:

Log.d(tag, message);

优先级是以下值之一:

日志消息的格式为:

date time PID-TID/package priority/tag: message

例如,下面的日志消息的优先级为 V,标记为 AuthZen

12-10 13:02:50.071 1901-4229/com.google.android.gms V/AuthZen: Handling delegate intent.

PID 代表进程标识符,TID 则为线程标识符;如果仅有一个线程,两者可以相同。

在 logcat 监视器中显示正在运行的应用

要显示特定应用的日志消息,请执行以下操作:

  1. 满足先决条件和依赖关系
  2. 打开一个应用项目。
  3. 在硬件设备或模拟器上运行应用
  4. 显示 Android Monitor
  5. 点击 logcat 标签。
  6. 默认情况下,logcat 监视器仅显示设备或模拟器上正在运行的应用的日志消息:

    要更改此默认设置,请参阅过滤 logcat 消息

  7. (可选)选择不同的设备、模拟器或进程

设置日志级别

您可以设置日志级别,以控制 logcat 监视器中显示的消息数量。您可以显示所有消息,也可以仅显示指示最严重状态的消息。

请记住,无论日志级别设置如何,logcat 监视器都会继续收集所有消息。此设置仅决定 logcat 监视器的显示内容。

要设置日志级别,请执行以下操作:

搜索 logcat 消息

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

  1. (可选)如果您想要使用正则表达式搜索模式,请选择 Regex
  2. 在搜索字段中键入字符序列 “搜索”图标
  3. logcat 监视器将相应地显示更改。

  4. 按 Enter 键以在此会话期间将搜索字符串保存到菜单中。
  5. 要重复搜索,请从搜索菜单中选择。根据需要选择或取消选择 Regex(不建议使用此设置)。

过滤 logcat 消息

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

:过滤器的应用范围为整个 logcat 历史记录,而不仅仅是 logcat 监视器中当前显示的消息。确保对其他显示选项进行相应设置,以便您能够看到想要检查的过滤器输出。

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

  1. 在过滤器菜单中,选择一个过滤选项:
    • Show only selected application - 仅显示通过应用代码生成的消息(默认选项)。logcat 监视器将使用活动应用的 PID 过滤日志消息。
    • No Filters - 不应用过滤器。无论您选择哪个进程,logcat 监视器都会显示设备中的所有日志消息。
    • Edit Filter Configuration - 创建或修改自定义过滤器。例如,您可以创建一个过滤器,以同时查看两个应用中的日志消息。

    定义过滤器后,您还可以在菜单中选择它们。要从菜单中移除过滤器,请删除过滤器。

  2. 如果您选择了 Edit Filter Configuration,请创建或修改过滤器。
    1. Create New Logcat Filter 对话框中指定过滤器参数:
      • Filter Name - 键入您想要定义的过滤器的名称,或者从左侧面板中选择一个以修改现有过滤器。名称只能包含小写字符、下划线和数字。
      • Log Tag -(可选)指定标记。如需了解详细信息,请参阅 logcat 消息格式
      • Log Message -(可选)指定日志消息文本。如需了解详细信息,请参阅 logcat 消息格式
      • Package Name -(可选)指定软件包名称。如需了解详细信息,请参阅 logcat 消息格式
      • PID -(可选)指定进程 ID。如需了解详细信息,请参阅 logcat 消息格式
      • Log Level -(可选)选择日志级别。如需了解详细信息,请参阅设置日志级别
      • Regex - 选择此选项可以为相关参数使用正则表达式。
    2. 点击 +,将过滤器定义添加到左侧面板中。
    3. 要移除过滤器,请在左侧面板中将其选中,然后点击 -

    4. 完成后,点击 OK。如果您点击 Cancel,任何过滤器添加或修改操作都会丢失。
  3. 确保您能看到想要检查的日志消息。
  4. 如果您认为没有看到想要检查的日志消息,请尝试选择 No filters搜索特定日志消息。

配置 logcat 标题显示

要自定义标题显示以仅显示感兴趣的信息,请执行以下操作:

如需了解有关消息元素的详细信息,请参阅 logcat 消息格式

上下移动堆叠跟踪

在应用引发异常时,消息将包含方法调用的堆栈追踪。logcat 监视器让您可以在日志中快速定位堆栈追踪,并在代码编辑器中查看关联代码。如果需要(和可能),逆编译程序将派生您可以查看的源代码。

要上下移动堆栈追踪并在代码编辑器中查看关联代码,请执行以下操作:

移动到日志结尾

点击特定消息将停止显示消息。

要快速移动到日志结尾以查看实时消息流,请执行以下操作:

打印和写入文件

要保留日志信息,您可以将日志发送到打印机,将日志写入 PDF 文件,或者将日志复制并粘贴到文本文件中。

要打印日志或将其写入 PDF 文件,请执行以下操作:

  1. 点击“Print” “Print”图标
  2. 在 Android Studio 的 Print 对话框中,可以选择更改打印参数,然后点击 Print
  3. 在操作系统的 Print 对话框中,可以选择更改打印参数,然后点击 Print
  4. 您可以设置参数,以将日志发送到打印机或将其写入 PDF 文件。

要将日志复制到文本文件,请执行以下操作:

  1. 在 logcat 监视器中,请选择然后复制日志文本。
  2. 按 Ctrl+A (⌘A) 全选。

  3. 打开文本编辑器并将文本粘贴到文件中。

清除和重启日志

要清除(刷新)整个日志,请执行以下操作:

如果存在问题并且日志不再记录,您可以重启日志:

向您的代码添加日志消息

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

请参阅 Log 类说明,查看更完整的选项列表。

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

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

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

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

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

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)