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的身份证号码自动生成程序
Aug 15 Python
python从入门到精通(DAY 3)
Dec 20 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
浅谈python3中input输入的使用
Aug 02 Python
pytorch 共享参数的示例
Aug 17 Python
Django继承自带user表并重写的例子
Nov 18 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
Python变量作用域LEGB用法解析
Feb 04 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
pytest配置文件pytest.ini的详细使用
Apr 17 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
php进程间通讯实例分析
2016/07/11 PHP
简单实现PHP留言板功能
2016/12/21 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
学习ExtJS TextField常用方法
2009/10/07 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
google广告之另类js调用实现代码
2020/08/22 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
web.py获取上传文件名的正确方法
2014/08/26 Python
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
django 模型中的计算字段实例
2020/05/19 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
生日邀请函范文
2014/01/13 职场文书
合作意向书
2014/07/30 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
2016公司年会通知范文
2015/04/25 职场文书
微信早安问候语
2015/11/10 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js