首页 >> 大全

测试开发之----给你的apk加上时间分片的log记录

2023-12-06 大全 27 作者:考证青年

那么这个示例会演示如何给你自己的apk加上log记录功能,之所以会有这一个,是因为当前所在项目在测试过程中是无法通过usb线连接电脑的(被硬件占了),远程调试也可以,但是会占用端口切来切去麻烦,并且速度非常慢。于是考虑能不能够把log日志分时间段记录在sd卡,这样出问题可以直接获取日志,同时也可以为后续的持续集成log上传打下良好基础。

PS:请无视项目名字,我懒得改了,因为一开始是匹配自己项目的。

功能特点:

这里写图片描述

直接上运行结果:

这里写图片描述

这里写图片描述

app界面

这里写图片描述

原理解释:

1.点击开始记录,绑定一个log记录的服务

2.这个服务会初始化对象,该对象负责读取log信息并写入文件

3.在每次写的过程中,会获取时间,如果大于x秒,那么会重新创建一个新的文件流,继续写入,实现分时间记录

4.按日记录,查询文件夹内是否存在当天记录,不存在那么会创建今天的日志文件夹

代码:

.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分片时间
}

:核心的类,负责读取记录和按时间分片记录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{@Overridepublic 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;}
}

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

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了