测试开发之

阅读: 评论:0

测试开发之

测试开发之

那么这个示例会演示如何给你自己的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 = ExternalStorageDirectory()+"/AirBotLog";public static final String TODAY_DIR = ExternalStorageDirectory()+"/AirBotLog/"&#FolderTime();public static final String NOW_FILE_NAME = ExternalStorageDirectory()+"/AirBotLog/"&#FolderTime()+"/"&#FileTime()+".log";public static final long SPLIT_TIME = 10 * 1000;  //log分片时间
}

RecordStep:核心的类,负责读取记录和按时间分片记录log

public class RecordStep {String TAG = Name();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{@Overridepublic void run() {beginRecord();}}public void setClearBeforeEnable(){clearBefore = true;}private void beginRecord() {Log.i(TAG,"beging record");try {if(clearBefore){Runtime().exec("logcat -c");}inputStream = Runtime().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&#adLine())!=null){//Log.i(TAG,str);if(System.currentTimeMillis() - s_time > AirBotConst.SPLIT_TIME){fileWriter.flush();fileWriter.close();fileWriter = new FileWriter(AirBotConst.TODAY_DIR+"/"&#FileTime()+".log");//Log.i(TAG,"change record file!!!"&#FileTime());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;}
}

最后面是开源的代码地址:

本文发布于:2024-02-04 15:40:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170710761656773.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23