使用 Logcat 写入和查看日志

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

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

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

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

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

Log.d(tag, message);
优先级是以下值之一:

V — 详细(最低优先级)
D — 调试
I — 信息
W — 警告
E — 错误
A — 断言
日志消息的格式为:

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 监视器中显示正在运行的应用
要显示特定应用的日志消息,请执行以下操作:

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

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

(可选)选择不同的设备、模拟器或进程。
设置日志级别
您可以设置日志级别,以控制 logcat 监视器中显示的消息数量。您可以显示所有消息,也可以仅显示指示最严重状态的消息。

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

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

在 Log level 菜单中,选择以下值之一:
Verbose - 显示所有日志消息(默认值)。
Debug - 显示仅在开发期间有用的调试日志消息,以及此列表中较低的消息级别。
Info - 显示常规使用的预计日志消息,以及此列表中较低的消息级别。
Warn - 显示尚不是错误的潜在问题,以及此列表中较低的消息级别。
Error - 显示已经引发错误的问题,以及此列表中较低的消息级别。
Assert - 显示开发者预计绝不会发生的问题。
搜索 logcat 消息
要搜索 logcat 监视器中当前显示的消息,请执行以下操作:

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

按 Enter 键以在此会话期间将搜索字符串保存到菜单中。
要重复搜索,请从搜索菜单中选择。根据需要选择或取消选择 Regex(不建议使用此设置)。
过滤 logcat 消息
一种将日志输出减少至可管理水平的方式是,使用过滤器进行限制。

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

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

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

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

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

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

选择“Use Soft Wraps” “Use Soft Wraps”图标 以查看整个消息,并防止其从右侧边缘消失。
点击“Configure Logcat Header” “Configure Logcat header”图标 以指定想要显示或隐藏的消息的元素,然后点击 OK。
如需了解有关消息元素的详细信息,请参阅 logcat 消息格式。

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

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

点击“Up the Stack Trace” “Up the Stack Trace”图标 可以移动到日志中相对于当前位置的前一个方法。
点击“Down the Stack Trace” “Down the Stack Trace”图标 可以移动到日志中相对于当前位置的下一个方法。
移动到日志结尾
点击特定消息将停止显示消息。

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

点击“Scroll to the End” “Scroll to the End”图标
按 End 键。
滚动或按 Page Down 键,直至结尾。
打印和写入文件
要保留日志信息,您可以将日志发送到打印机,将日志写入 PDF 文件,或者将日志复制并粘贴到文本文件中。

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

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

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

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

打开文本编辑器并将文本粘贴到文件中。
清除和重启日志
要清除(刷新)整个日志,请执行以下操作:

点击“Clear logcat” “Clear logcat”图标
如果存在问题并且日志不再记录,您可以重启日志:

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

Log.e(String, String)(错误)
Log.w(String, String)(警告)
Log.i(String, String)(信息)
Log.d(String, String)(调试)
Log.v(String, String)(详细)
请参阅 Log 类说明,查看更完整的选项列表。

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

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

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

private static final String TAG = “MyActivity”;

Log.i(TAG, "MyClass.getView() — get item number " + position);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值