如何使用Adb Logcat仅打印实时日志且不清除缓冲区?
解决方法:只查看adb logcat启动后的新日志(不清除缓冲区)
我完全懂你的需求——不想用-c清空缓冲区(毕竟测试期间其他进程还依赖这些旧日志),只想捕获执行logcat命令之后产生的新操作日志,而且试过--live-trace没效果对吧?别慌,有两个官方支持的实用方法可以完美解决这个问题:
方法一:使用
-T参数(官方推荐)
这个是adb自带的参数,专门用来指定日志输出的起始位置。当你把参数值设为0时,它会直接跳过所有已存在的缓冲日志,只输出命令启动后新产生的日志内容:adb logcat -T 0如果你用的adb版本比较旧,可能小写的
-t参数不支持持续输出(部分旧版本里小写-t是输出指定行数后直接退出),那可以试试下面的替代方法。方法二:基于日志行标记过滤
先获取当前缓冲日志的最后一行作为标记,然后只输出这一行之后的新日志,全程不会触碰原有缓冲区:# 先捕获当前日志的最后一行,再过滤出后续新日志 adb logcat | awk -v last_line="$(adb logcat -d | tail -1)" '$0 >= last_line {print}'原理很简单:先用
adb logcat -d导出当前所有缓冲日志,取最后一行作为基准,再用awk过滤出比基准行新(或相同)的日志,持续跟踪后续产生的内容。
这两个方法都不会修改或清除设备的日志缓冲区,既能满足你只看新日志的需求,也不会影响其他进程读取旧缓冲日志。
内容的提问来源于stack exchange,提问作者Mani Vannan
相关产品推荐
相关产品推荐

