adb logcat 过滤的正确姿势

网上好多说如何使用 adb logcat 过滤显示应用的日志,多少是要查询到进程号,再通过 grep 来过滤。

其实 logcat 自己带了过滤,但是大家可能不清楚 tag 的含义,无论用包名还是 app 名都无法获得过滤效果。其实是填 Log.i 的第一个参数 tag 值。这里提供一个参考给大家。

    public void surfaceCreated(SurfaceHolder holder) {
        Log.i("CameraActivity", "surfaceCreated");
        Toast.makeText(CameraActivity.this,
                "CameraActivity : surfaceCreated", Toast.LENGTH_SHORT).show();
        openCamera();
    }

运行结果(后面 *:S 是屏蔽其它日志的意思)

adb logcat CameraActivity:D *:S
--------- beginning of /dev/log/system
--------- beginning of /dev/log/main
I/CameraActivity( 8489): onCreate
I/CameraActivity( 8489): surfaceCreated
I/CameraActivity( 8489): surfaceChanged
`adb logcat` 是 Android 开发工具包的一部分,主要用于查看 Android 设备的系统日志以及应用程序日志。当你想要从大量的日志信息中快速找出特定的内容时,利用 `adb logcat` 的过滤功能就能帮助你高效地定位所需信息。下面是如何使用 `adb logcat` 过滤指定字符串的方法: ### 使用基本语法 打开命令提示符或终端窗口,并输入以下命令: ```bash adb logcat -v brief | grep "目标字符串" ``` 这里,`-v brief` 表示以简明的方式显示日志,而 `grep "目标字符串"` 则是用来过滤显示那些包含 `"目标字符串"` 的日志行。比如,如果你想查找所有包含 `"Error"` 的错误信息,你可以输入: ```bash adb logcat -v brief | grep "Error" ``` ### 详细说明各个参数: #### `-v brief` - **解释**:这表示使用简明模式显示日志,意味着日志将只包含必要的信息(时间戳、进程 ID 和线程 ID),而不是每个条目的完整堆栈跟踪。 #### `|` - **作用**:管道符 (`|`) 是用于将命令输出传给另一个命令或脚本的功能。在这个上下文中,它将 `adb logcat -v brief` 输出的结果作为 `grep` 命令的输入。 #### `grep "目标字符串"` - **功能**:`grep` 命令用于在文件流中搜寻匹配给定模式的所有行。在这里,“目标字符串”是你希望在日志条目中找到的文本。 ### 更高级的应用 如果你想过滤日志来自某个特定的进程或者应用程序,你可以将进程名或包名加入到 `grep` 中: ```bash adb logcat -v brief com.example.appName.* ``` 这里的 `com.example.appName.*` 将会匹配名为 `com.example.appName.` 的所有包名,即该应用所有的日志。 ### 注意事项 - 确保你在正确的设备上运行此命令,通过 `adb devices` 检查你的设备是否已连接并列出。 - 如果设备正在运行多个应用程序,则需要清楚是哪个应用程序的日志你需要查看。可以尝试使用不同的包名进行过滤测试。 - 对于大型日志集,频繁使用 `grep` 可能会影响性能。考虑在日志收集之后再做详细的搜索分析。 通过上述步骤,你可以有效地使用 `adb logcat` 来过滤和查找你关心的日志信息,提高解决问题的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值