【发布时间】:2011-08-13 21:35:43
【问题描述】:
我开发了一个执行某些网络活动的 Android 应用程序。在类中,我实现了详细、调试、信息、警告和错误等日志消息。但是当我使用参数 -d 打开 logcat 时,它会列出来自设备的整个日志消息。因此很难跟踪我的应用程序的日志消息。有没有办法从整个 logcat 输出中过滤我的应用程序的日志消息?
【问题讨论】:
我开发了一个执行某些网络活动的 Android 应用程序。在类中,我实现了详细、调试、信息、警告和错误等日志消息。但是当我使用参数 -d 打开 logcat 时,它会列出来自设备的整个日志消息。因此很难跟踪我的应用程序的日志消息。有没有办法从整个 logcat 输出中过滤我的应用程序的日志消息?
【问题讨论】:
每条 Android 日志消息都有一个标签和与之关联的优先级:
The tag of a log message is a short string indicating the system
component from which the message originates (for example, "View"
for the view system).
The priority is one of the following character values, ordered
from lowest to highest priority:
V — Verbose (lowest priority)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (highest priority, on which nothing is ever printed)
adb logcat ActivityManager:I MyApp:D *:S
如果带有“信息”级别或更高级别(警告、错误、致命)的日志带有 ActivityManager 标签,则会显示这些日志。这同样适用于带有标签 MyApp 且优先级为 Debug 或更高的消息。 *:S 使所有其他消息保持沉默。
在文档中查看:http://developer.android.com/guide/developing/tools/adb.html#logcat
我建议您将所有其他日志保持在错误或警告级别 (*:W)。有时,由于某些系统事件或第三方应用程序,您的应用程序出现问题,而您确实希望收到这些事件的通知!
您可能想要更改 logcat 的输出格式。尝试使用这些设置(上面相同链接中的信息)
您可能想查看 Coloured output 的 logcat。我已经对该脚本进行了一些修改,以更好地满足我的需要,所以也许你也可以调整它。 (我试图将我的修改发送给作者,但他没有回复)。
【讨论】:
Logcat 有一个小的 + 按钮,可让您创建过滤器。使用您在应用程序中使用的 TAG 并在过滤器中指定它。这将创建一个仅显示您的应用程序消息的新选项卡。 当您使用它时,我建议为 AndroidRuntime 标签创建一个过滤器。你所有的异常都会被丢弃在那里,你可以很容易地找到它们。
当然,您可以使用同一栏中的按钮按类别更多地过滤这些消息(详细、警告、错误、..)。
【讨论】:
grep 这样的工具。或者看看“过滤日志输出”下的developer.android.com/guide/developing/tools/adb.html