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文件写入实例分析
Apr 08 Python
Python简单进程锁代码实例
Apr 27 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
python杀死一个线程的方法
Sep 06 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
Python实现学生成绩管理系统
Apr 05 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
python批量查询、汉字去重处理CSV文件
May 31 Python
python获取依赖包和安装依赖包教程
Feb 13 Python
python实现磁盘日志清理的示例
Nov 05 Python
python try...finally...的实现方法
Nov 25 Python
Python 线程池模块之多线程操作代码
May 20 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 读取shell管道传输过来的内容
2010/03/01 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
医学生自我鉴定范文
2013/11/08 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
2014年政协工作总结
2014/12/09 职场文书