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中用format函数格式化字符串的用法
Apr 08 Python
python根据日期返回星期几的方法
Jul 06 Python
Django中的Signal代码详解
Feb 05 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
使用python画社交网络图实例代码
Jul 10 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
python shutil文件操作工具使用实例分析
Dec 25 Python
pytorch 常用函数 max ,eq说明
Jun 28 Python
python 模拟在天空中放风筝的示例代码
Apr 21 Python
浅谈Python 中的复数问题
May 19 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
日本十大惊悚动漫
2020/03/04 日漫
PHP4实际应用经验篇(7)
2006/10/09 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
php 禁止页面缓存输出
2009/01/07 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
学习ExtJS TextField常用方法
2009/10/07 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
python使用代理ip访问网站的实例
2018/05/07 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
python 模块导入问题汇总
2021/02/01 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
阿迪达斯德国官方网站:adidas德国
2017/07/12 全球购物
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
复古服装:RetroStage
2019/05/10 全球购物
新闻专业个人求职信
2013/12/19 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
工厂仓库管理员岗位职责
2015/04/09 职场文书
设备技术员岗位职责
2015/04/11 职场文书
实用求职信模板范文
2019/05/13 职场文书
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL