Android 日志保存到本地---CscSDK

来源:互联网 发布:金凯度 知乎 编辑:程序博客网 时间:2024/04/28 16:05

在Android开发过程当中,总是需要测试人员来帮我们测试BUG。他们不可能安装Android studio,来给我们收集日志。那么就需要我们把日志记录到我们的Android设备当中。

本文我们先写将普通日志记录到设备的内存当中。

因为内存有限,我们不可能将所有的日志都保存下来,那么该怎么保存呢?2种思路,一种是按天来存,保存当前时间前多少天的日志,另一种是指定一共存放多少个文件的日志。

然后规定每个文件最大存放多少M的日志。

本文我就用第二种方式来实现日志存放功能。

结合Android数据记录到文件中,Android日志类----CscSDK,这两篇文章我们把日志打印到本地文件中。

我说一下大致思路,代码就看我写的demo吧。

1.首先每次日志都记录到编号为0的文件,

2.在日志记录完之后,判断文件的大小是否大于自定义的文件大小,比如每个日志文件最大为2M。

3.当文件大小大于2M时,将已经存在的日志文件依次重命名,从编号最大的文件开始重命名,每个文件编号依次加一。

4.当最大的文件编号等于我们所规定的最多存放日志文件数量时,将最后一个文件直接删除。

5.然后重复循环1.2.3.4.

public static void save(String string){        // 日期 时间: 级别        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.CHINA).format(Long.valueOf(System.currentTimeMillis()));        FileOutputStream fos=null;        dirFile = createDir(fileDirPath);        if (null== dirFile){            Log.e(TAG,"日志文件夹没有创建成功");            return;        }        Log.i(TAG,"filepath="+filePath);        filePath = fileDirPath + File.separator+START_COUNT+LOG_FILE_TXT_NAME;        File file = createFile(filePath);        if (null==file){            Log.e(TAG,"日志文件没有创建成功");            return;        }        try {            fos= new FileOutputStream(filePath,true);            byte[] bytes=(time+"/"+string+"\n").getBytes();            fos.write(bytes);        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                if (fos!=null) {                    fos.close();                }            } catch (IOException e) {                e.printStackTrace();            }        }        long size=getFileSize(file);        if (size==ERROR_SIZE){            Log.e(TAG,"获取文件大小失败");        }        // 分文件、限制文件个数        if (size > MAX_SIZE_OF_TXT)        {            for (int count = MAX_COUNT; count >= START_COUNT; count--)            {                if (count == MAX_COUNT)                {                    if (FileUtil.isExist(dirFile, count + LOG_FILE_TXT_NAME) && !FileUtil.delete(dirFile, MAX_COUNT + LOG_FILE_TXT_NAME))                    {                        Log.e(TAG, "文件删除失败");                        return;                    }                }                else                {                    if (FileUtil.isExist(dirFile, count + LOG_FILE_TXT_NAME) && !FileUtil.rename(dirFile, count + LOG_FILE_TXT_NAME, (count + 1) + LOG_FILE_TXT_NAME))                    {                        Log.e(TAG, "文件重命名失败");                        return;                    }                }            }        }    }
源码下载

http://download.csdn.net/download/u010686002/10024222


原创粉丝点击