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实现异步回调机制代码分享
Jan 10 Python
Python下singleton模式的实现方法
Jul 16 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
Pyinstaller加密打包应用的示例代码
Jun 11 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
python如何调用php文件中的函数详解
Dec 29 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 Python
Python 数据可视化之Seaborn详解
Nov 02 Python
Python的三个重要函数详解
Jan 18 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多线程下载远程多个文件
2013/06/25 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
详解python之heapq模块及排序操作
2019/04/04 Python
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
秘书岗位职责
2013/11/18 职场文书
医学求职自荐信
2014/06/21 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
天河观后感
2015/06/11 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技