在命令行过滤 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 日志的主要内容,如果未能解决你的问题,请参考以下文章