Python实现过滤单个Android程序日志脚本分享


Posted in Python onJanuary 16, 2015

在Android软件开发中,增加日志的作用很重要,便于我们了解程序的执行情况和数据。Eclipse开发工具会提供了可视化的工具,但是还是感觉终端效率会高一些,于是自己写了一个python的脚本来通过包名来过滤某一程序的日志。

原理

通过包名得到对应的进程ID(可能多个),然后使用adb logcat 过滤进程ID即可得到对应程序的日志。

源码

#!/usr/bin/env python

#coding:utf-8

#This script is aimed to grep logs by application(User should input a packageName and then we look up for the process ids then separate logs by process ids).
import os

import sys
packageName=str(sys.argv[1])
command = "adb shell ps | grep %s | awk '{print $2}'"%(packageName)

p = os.popen(command)

##for some applications,there are multiple processes,so we should get all the process id

pid = p.readline().strip()

filters = pid

while(pid != ""):

    pid = p.readline().strip()

    if (pid != ''):

        filters = filters +  "|" + pid

        #print 'command = %s;filters=%s'%(command, filters)

if (filters != '') :

    cmd = 'adb logcat | grep --color=always -E "%s" '%(filters)

    os.system(cmd)

使用方法

python logcatPkg.py com.mx.browser

最新代码

#!/usr/bin/env python

#coding:utf-8

#This script is aimed to grep logs by application(User should input a packageName and then we look up for the process ids then separate logs by process ids).
import os

import sys
packageName=str(sys.argv[1])
command = "adb shell ps | grep %s | awk '{print $2}'"%(packageName)

p = os.popen(command)

##for some applications,there are multiple processes,so we should get all the process id

pid = p.readline().strip()

filters = pid

while(pid != ""):

    pid = p.readline().strip()

    if (pid != ''):

        filters = filters +  "|" + pid

        #print 'command = %s;filters=%s'%(command, filters)

if (filters != '') :

    cmd = 'adb logcat | grep --color=always -E "%s" '%(filters)

    os.system(cmd)

不足

当脚本执行后,Android程序如果关闭或者重新启动,导致进程ID变化,无法自动继续输出日志,只能再次执行此脚本。

Python 相关文章推荐
使用python Django做网页
Nov 04 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
Python3读取Excel数据存入MySQL的方法
May 04 Python
python实现随机漫步算法
Aug 27 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
浅谈Python type的使用
Nov 19 Python
Python pip安装模块提示错误解决方案
May 22 Python
python语言是免费还是收费的?
Jun 15 Python
分享7个 Python 实战项目练习
Mar 03 Python
Python中的对象,方法,类,实例,函数用法分析
Jan 15 #Python
Python转换HTML到Text纯文本的方法
Jan 15 #Python
python中os操作文件及文件路径实例汇总
Jan 15 #Python
python私有属性和方法实例分析
Jan 15 #Python
python实现堆栈与队列的方法
Jan 15 #Python
python多线程用法实例详解
Jan 15 #Python
Python中os.path用法分析
Jan 15 #Python
You might like
分享PHP入门的学习方法
2007/01/02 PHP
php array_intersect()函数使用代码
2009/01/14 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
php网站地图生成类示例
2014/01/13 PHP
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
python实现挑选出来100以内的质数
2015/03/24 Python
Python闭包实现计数器的方法
2015/05/05 Python
Python注释详解
2016/06/01 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
python里 super类的工作原理详解
2019/06/19 Python
python跳出双层for循环的解决方法
2019/06/24 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
wxPython多个窗口的基本结构
2019/11/19 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
汽车销售求职自荐信
2013/10/01 职场文书
新驾驶员个人自我评价
2014/01/03 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
带薪年假请假条
2014/02/04 职场文书
保密工作目标责任书
2014/07/28 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL