在命令行过滤 Logcat 日志

Posted

技术标签:

【中文标题】在命令行过滤 Logcat 日志【英文标题】:Filtering Logcat Logs on commandline 【发布时间】:2012-12-18 11:14:24 【问题描述】:
public static final TAG = "Legendry Eagle";

问题:我想从命令行查看"Legendry Eagle" 的日志。

我试过了:

 adb logcat -s "Legendry Eagle" 
 adb logcat -s <Legendry Eagle>

但它仍然无法正常工作。

【问题讨论】:

Offtopic:你为什么使用 DOS Promt 而不是 Eclipse 进行调试?还是你不调试? 使用 [this][1] 链接,它可能会有所帮助 [1]:***.com/questions/7537419/… 你确定你不是简单地拼错了命令上的标签吗?也许您的项目实际上使用了 Legendary Eagle,但您正在搜索 Legendry Eagle(反之亦然)。 文档说The series of specifications is whitespace-delimited.,因此如果您尝试按标签进行过滤,则不能在标签中使用空格。 【参考方案1】:

如果您只想显示特定 TAG 的 logcat,请执行以下操作:

adb logcat YourTAGHere:Priority *:S

*:S 很重要,因为它将所有其他标签设置为静音。如果我只想在 Verbose 级别跟踪我的 MainActivity 标记,则语法如下所示。

adb logcat MainActivity:V *:S

编辑: 我发现没有用空格过滤掉标签的好方法。 LegendryEagle 工作正常,但我无法过滤掉 Legendry Eagle

【讨论】:

文档说 The series of specifications is whitespace-delimited. 这可能是他的“Legendry Eagle”标签无法过滤的原因。 +1 表示 *:S。我现在真的很清楚如何使用选项 The series of specifications is whitespace-delimited 因为您在 Windows 命令提示符下,并且当您在 Windows 命令提示符下时,您可以使用双引号将使用空格的参数括起来,即 "White Space Parameter" 以转义它们。想想move "c:\android files" "c:\my code\android files"。这意味着您应该能够做到:adb logcat "Legendary Eagle:Priority" *:S。我无法完全确认,因为我没有任何使用空格的标签来测试,但这有效:adb logcat "StatusBarManagerService:V" *:S 所以这告诉我它在 Windows 上而不是 adb。 @NeptuneSystems 即使使用双引号,adb 也只使用第一个单词来过滤输出。如果您想过滤包含空格的字符串,Aleks G's answer 提供了一个解决方案。 >*:S 很重要,因为它将所有其他标签设置为静音 +1 thx 很多!【参考方案2】:

如果标准adb logcat -s tagname 不起作用,您可以随时将adb 的输出通过管道传输到find 以过滤您需要的内容,例如

adb logcat | find "Legendry Eagle"

这会将整个 logcat 传递给 DOS find 命令,该命令又会过滤掉包含 Legendry Eagle 字符串的行。

【讨论】:

带有“find xyz”的扩展也解决了我的问题,谢谢! (除非您进行完整的 1 小时研究,否则互联网不会告诉您的最低限度) 这解决了我的问题。 *:S 和 -s 方法可能已经过时了。【参考方案3】:
adb logcat | grep "your tag"

只会显示带有“你的标签”的日志

【讨论】:

【参考方案4】:

答案很简单。请删除两个单词之间的空格,然后重试。

 public static final TAG = "LegendryEagle";
 adb logcat -s "LegendryEagle" 

并查看 logcat 。你得到了答案。

【讨论】:

网络视图将所有console.log 记录到“网络控制台”,所以这并没有真正的帮助。【参考方案5】:

使用此命令 adb logcat *:W 并阅读此内容。 http://developer.android.com/tools/debugging/debugging-log.html

【讨论】:

【参考方案6】:

假设你使用 Eagle 作为日志标签,使用这个:

adb logcat Eagle:* *:s

据我了解,Eagle:* 表示为 Eagle 标签打开所有日志,*:s 表示使所有其他标签静音

我个人觉得 eclipse logcat 视图比命令行更容易使用,它对不同级别的日志有不同的颜色,你可以创建一个过滤器并保存它,它会一直保留在那里,直到你删除那个过滤器

【讨论】:

以上是关于在命令行过滤 Logcat 日志的主要内容,如果未能解决你的问题,请参考以下文章

cmd命令行中logcat输出日志中文乱码

Logcat 按应用程序命令行过滤,不带标签

adb logcat 如何过滤我的app日志?

android 怎么使用应用的包名通过logcat命令来过滤某个应用的日志

Android logcat命令行在应用程序崩溃后输出文件

Android开发利器之pidcat