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 29 Python
python自动化测试实例解析
Sep 28 Python
python中 logging的使用详解
Oct 25 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 Python
对python文件读写的缓冲行为详解
Feb 13 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
Python函数__new__及__init__作用及区别解析
Aug 31 Python
Python 创建守护进程的示例
Sep 29 Python
浅谈Python协程asyncio
Jun 20 Python
Python各协议下socket黏包问题原理
Apr 12 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自动适应范围的分页代码
2008/08/05 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
PHP简洁函数小结
2011/08/12 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
2016/10/11 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
[19:15]DK战队纪录片
2014/09/02 DOTA
python实现进程间通信简单实例
2014/07/23 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
Python 字典中的所有方法及用法
2020/06/10 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
全民健身日活动方案
2014/01/29 职场文书
房地产营销策划方案
2014/02/08 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
公司年会开场白
2015/06/01 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
Python制作春联的示例代码
2022/01/22 Python
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python