测试开发之----给你的apk加上时间分片的log记录
来源:互联网 发布:多迪网络是培训机构嘛 编辑:程序博客网 时间:2024/05/17 05:17
那么这个示例会演示如何给你自己的apk加上log记录功能,之所以会有这一个,是因为当前所在项目在测试过程中是无法通过usb线连接电脑的(被硬件占了),远程调试也可以,但是会占用端口切来切去麻烦,并且速度非常慢。于是考虑能不能够把log日志分时间段记录在sd卡,这样出问题可以直接获取日志,同时也可以为后续的持续集成log上传打下良好基础。
PS:请无视项目名字,我懒得改了,因为一开始是匹配自己项目的。
功能特点:
直接上运行结果:
app界面
原理解释:
1.点击开始记录,绑定一个log记录的服务
2.这个服务会初始化RecordStep对象,该对象负责读取log信息并写入文件
3.在每次写的过程中,会获取时间,如果大于x秒,那么会重新创建一个新的文件流,继续写入,实现分时间记录
4.按日记录,查询文件夹内是否存在当天记录,不存在那么会创建今天的日志文件夹
代码:
AirBotConst.java:保存一些个可配置的常量
public class AirBotConst { public static final String LOG_DIR = Environment.getExternalStorageDirectory()+"/AirBotLog"; public static final String TODAY_DIR = Environment.getExternalStorageDirectory()+"/AirBotLog/"+Utils.getFolderTime(); public static final String NOW_FILE_NAME = Environment.getExternalStorageDirectory()+"/AirBotLog/"+Utils.getFolderTime()+"/"+Utils.getFileTime()+".log"; public static final long SPLIT_TIME = 10 * 1000; //log分片时间}
RecordStep:核心的类,负责读取记录和按时间分片记录log
public class RecordStep { String TAG = RecordStep.class.getName(); boolean flag = true; boolean nameChange_flag = false; InputStream inputStream; BufferedReader bufferedReader; FileWriter fileWriter; boolean clearBefore = false; public void start(){ new writeThread().start(); } class writeThread extends Thread{ @Override public void run() { beginRecord(); } } public void setClearBeforeEnable(){ clearBefore = true; } private void beginRecord() { Log.i(TAG,"beging record"); try { if(clearBefore){ Runtime.getRuntime().exec("logcat -c"); } inputStream = Runtime.getRuntime().exec("logcat -v time").getInputStream(); bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); fileWriter = new FileWriter(AirBotConst.NOW_FILE_NAME); long s_time = System.currentTimeMillis(); String str = null; while((str=bufferedReader.readLine())!=null){ //Log.i(TAG,str); if(System.currentTimeMillis() - s_time > AirBotConst.SPLIT_TIME){ fileWriter.flush(); fileWriter.close(); fileWriter = new FileWriter(AirBotConst.TODAY_DIR+"/"+Utils.getFileTime()+".log"); //Log.i(TAG,"change record file!!!"+Utils.getFileTime()); s_time = System.currentTimeMillis(); } fileWriter.write(str); fileWriter.write("\n"); } Log.i(TAG,"end?"); }catch (Exception e){ }finally { if(fileWriter!=null){ try { fileWriter.flush(); fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } } public void stop(){ flag = false; }}
最后面是开源的代码地址:
https://github.com/CloudHuan/LogRecord
1 0
- 测试开发之----给你的apk加上时间分片的log记录
- 给你的图片加上水印
- 给你的习题加上提示
- 给你的博客加上动画游戏
- 给你的cvs服务器加上邮件通知
- 给你的网站加上收藏夹图标
- 给你的C程序加上颜色
- 给你的WinForms程序加上启动动画
- 给你的WinForms程序加上启动动画
- 给你的C代码加上行号
- 给你的网站加上站内搜索---Compass入门教程
- 给你的网站加上站内搜索---Compass入门教程
- 【夏苗苗】给你的表单加上验证
- 给你的rman备份集加上密码锁
- 给你的Java程序加上配置文件
- Drawable 给你的图片加上波纹效果
- 给你的APK瘦瘦身
- [shell]给你一段log,如何输出指定时间后的所有log? .
- shell 学习杂记一
- android启动应用得 Uri.parse(path + projct + ".apk"), "application/and.and.package-archive"
- c#中自定义集合的实现
- linux(ubuntu) 安裝solr6.3 在tomcat8上 創建core
- 2016河海大学程序设计大赛专业组题解 快速幂取模 博弈论 背包 floyd
- 测试开发之----给你的apk加上时间分片的log记录
- Spark的算子的分类
- poj 2828POJ2828 Buy Tickets【线段树,逆序遍历】
- 51nod dai1163 最高的奖励
- IT学习网址
- ueditor1_4_3-utf8-jsp版使用配置
- xshell-常用命令
- Java “Unhandled exception type Exception”错误提示 (转)
- cmake 教程