【问题标题】:Filtering logcat output过滤 logcat 输出
【发布时间】:2012-12-15 09:49:18
【问题描述】:

我知道有很多这样的问题,但我确信我的情况有些不同。

我知道如何为不同的应用程序创建过滤器,但问题是我的 logcat 似乎正在打印很多 opengl 和其他消息,例如“JpgDecHal”、“Input”、“Posix”等。

我只想要我放入代码中的 Log.d(或 .whatever)语句,而不是所有其他内容。

我如何确保我只得到我想要的而不是这个?在大多数其他手机上一切正常。

这里有几行显示(我不需要):

12-31 10:56:33.921: D/IPCThreadState(2360): [DN #5] BR_CLEAR_DEATH_NOTIFICATION_DONE     cookie 0xcad6e8
12-31 10:56:54.367: D/My Id(2360): hassan@yopmail.com
12-31 10:56:54.370: I/System.out(2360): [socket][21] connection     /192.168.1.142:80;LocalPort=33289(20000)
12-31 10:56:54.370: I/System.out(2360): [CDS]connect[/192.168.1.142:80] tm:20
12-31 10:56:54.371: D/Posix(2360): [Posix_connect Debug]Process com.nettech.Socialcommunity :80 

【问题讨论】:

    标签: android filter logcat


    【解决方案1】:

    在所有日志语句中使用唯一标签,然后仅按该标签进行过滤。这样,即使您的应用程序的进程有其他记录的语句(如 OpenGL 等),您也只会获得带有该标记的语句。

    类似:

    Log.d("MySuperUniqueTag", "My Message");
    

    然后在 eclipse filer 中使用 LogCat:

    tag:MySuperUniqueTag
    

    【讨论】:

    • 是的,但是..没有其他方法吗?我有几个不同的标签。例如,当调用相同的 web 服务来上传视频、音频和文本时,标签可以帮助我区分。
    • 您可以使用 OR | 运算符过滤多个标签。
    • LogCat 过滤框也接受 Java RegEx,如果您需要更精细的控制。
    【解决方案2】:

    在您的过滤器中放入您应用的 classTAG,这将确保只有来自您应用的日志才会出现在 LogCat 窗口中。

    在 Logcat 搜索栏的右侧,有一个小框(默认情况下)其名称为 verbose。单击该框时,将名称更改为debug。这将确保只有 Log.d 语句会出现在 LogCat 窗口中。

    我希望这会有所帮助。

    【讨论】:

    • 所有这些 OPENGL 消息也是我的应用程序生成的调试消息。所以不,这没有帮助:(
    【解决方案3】:

    除了所有其他建议;这是一个非正则表达式,它将向您显示除 () 中列出的项目之外的所有内容:

    tag:^((?!InputEventConsistency|memalloc|Resources|global|Facade[B|U]|dalvik|skia|szipinf|APACHE).)*$
    

    当然,您需要选择自己的条款。这些只是我放入过滤器的项目示例。

    【讨论】:

    • 标签(memalloc、资源等)不会显示?如果是这样,您的答案可能是这里最好的答案。
    • 让它工作:) 非常感谢。我在标签中添加了“Activity Thread”、“Posix”、“JpgDecHal”和“OpenGL”。
    • @Asim 不错!很高兴它对你有用。这无疑让我更容易清理日志;)
    猜你喜欢
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多