Android平台日志收集系统

在产品开发测试中以及产品投放到终端客户后,我们经常会遇到各种各样的问题,产品出异常,比较严重的就是使用过程中死机,用户无法操作。对于这种情况,将问题反馈给研发,问题能够快速重现的研发还比较好解决,有些问题不常见,研发短时间内也很难找到问题根源。为了提高研发的效率,那么每次出异常的时候我们都最好有系统的打印系统,通过系统打印异常的蛛丝马迹去查找问题的元凶。但是有时出问题的时候,系统都已经死机或者无法操作了,也就不能通过操作去抓系统打印了,因此引入日志收集系统就变得很有必要。日志收集系统每次系统启动后后台自动运行,直至关机或系统崩溃,因此可以全程守护监控系统打印,对产品的快速稳定有着非常重要的意义。

日志,在Android系统中我们需要抓取的主要有两部分,一部分是驱动内核

打印出来的,一部分就是android部分打印出来的。

驱动内核打印的信息查看方法:cat /proc/kmsg

Android部分打印信息查看方法:logcat -v time

    日志系统运行逻辑

1、日志系统需要自动运行,无需人工干预;

2、如果用户通过系统持续抓取打印信息功能,需视日志系统是否已经启动,如果日志系统已经启动,那么可以提示用户日志系统已经启动;如果未启动,那么可以手动启动系统持续抓取系统打印功能;

3、什么时候自动启动日志系统?

从实际使用情况来说可以分一下几种情况:

A、        如果用户已经手动启动了持续抓取系统打印信息功能,此次开机无需再启动日志系统;

B、        卫星未定位,在收到系统BOOT_COMPLETED消息后30秒,启动日志收集系统。

4、日志系统空间大小限制;

鉴于每次系统启动后的正常打印,按照每次开机后运行的打印信息在3MB左右,按照平均每天用户开关机5次的使用频率,那么正常情况下一天就需要15MB空间,按照运行7天的收集限制,把存放日志系统文件的目录大小限制为100MB,在每次启动日志系统前,判断该目录是否已经达到100M,如果已经达到,那么可以启动删除程序删除日期最早存入的日志文件,一次删除达到30MB为宜,周而复始,循环操作,日志系统文件存储在系统内部,也就是/sdcard目录下,目录定在/sdcard/savelog。

当savelog目录文件大小超过100MB的情况下,我们需要判断一下里面是否有异常文件,在此暂且认为单次存入文件大小超过20MB的打印信息文件为系统异常的主要参考;那么怎么处理呢?按以下步骤处理:

第一步、压缩该异常文件,可以使用tar工具,压缩后的包可以存放到/sdcard/tarlog目录,该目录最多存6份异常信息,达到6份时,一次性删除前三次异常;

第二步、异常信息的压缩包通过网络传回服务器;这里分两种情况,一种在不带4G模块的机器,将通过用户在打开车智享的时候,通过车智享的程序与机器日志系统通讯判断是否有异常信息需要上报,如果有,一次最多从异常信息目录传递3个压缩包,然后车智享程序判断用户网络环境为WIFI的情况下,跟服务器通讯,把异常信息压缩包传递到服务器。另外一种就是带4G通讯模块的,那么就无需车智享中转,直接从机器端上传到服务器。

第三步、服务器开发维护人员将收集到的异常信息包拷贝出来给研发工程师分析。

5、人工参与提取系统日志系统打印:

由于日志系统是存储在系统内部存储里面,因此我们在使用的时候需要把需要的日志文件拷贝到DVR卡,再反馈到研发。

开发、测试人员:可以直接通过文件管理器去到/sdcard/savelog目录去拷贝需要的日志文件到DVR卡或者U盘,这个比较便利,平时使用较多,相关人员稍作培训即可。

但是对于终端客户:可能不知道怎么找对应的日志文件,因此我们需要傻瓜式一点。初步方案云服务程序里增加【用户体验反馈】按钮,点击该按钮后弹出让用户选择异常出现的大概时间段,是一个相对模糊一点的,可供选择的时间将是最1天、最近3天、最近5天,那么系统将会把对应时段收集到的系统打印信息打成压缩包后通过云服务上传到服务器,然后再把压缩包提交给研发工程师分析,该压缩包名称:电子条码+系统版本号组成,跟进电子条码可以找到对应终端用户,必要的时候可以电话沟通获取更详细的使用场景,系统版本号可以直观的帮助我们定位软件发布的时段,对跟进解决问题都有很大的帮助。

6、当文件序列号达到9999时,全部删除保存的log,重新从0000开始计数。假如一套开机十次,序列号运行到9999需要1000天。

一套有效的后台log系统对研发的帮助还是蛮大的,在嵌入式产品中也要尽量支持这种功能,可以加快研发进度,提高研发质量。

Android平台日志收集系统相关推荐

  1. 借鉴开源框架自研日志收集系统

    踏浪无痕 岂安科技高级架构师 十余年数据研发经验,擅长数据处理领域工作,如爬虫.搜索引擎.大数据应用高并发等.担任过架构师,研发经理等岗位.曾主导开发过大型爬虫,搜索引擎及大数据广告DMP系统目前负责 ...

  2. 代码:android崩溃日志收集和处理

    用来处理android崩溃日志收集的代码,详情的使用请转:android崩溃日志收集和处理 第一个类 /** * 异常捕捉实现类 */ public class ErrorCaughtimplemen ...

  3. python分布式日志收集系统_Go实现海量日志收集系统(一)

    项目背景 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 当系统机器比较少时,登陆到服务器上查看即可满足 当系统机器规模巨大,登陆到机器上查看几乎不现实 当然即使是机器规模不大,一个系统通常 ...

  4. Android平台监听系统截屏方案预研及相关知识点

    最近有个针对系统截屏的需求,所以预研了Android平台上捕获系统截屏的方案. 最直接的方式就是监听手机的系统截屏组合键(电源键+音量下键),但是这种方式实现难度大,且有的机型使用特殊手势进行截屏,兼 ...

  5. 基于Flume的美团日志收集系统(一)架构和设计

    背景 美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流.美团的日志收集系统基于Flume设计和搭建而成. <基于Flume的美团 ...

  6. 基于Flume的美团日志收集系统-----架构和设计

    问题导读: 1.Flume-NG与Scribe对比,Flume-NG的优势在什么地方? 2.架构设计考虑需要考虑什么问题? 3.Agent死机该如何解决? 4.Collector死机是否会有影响? 5 ...

  7. printf 重新实现put_Go 实现海量日志收集系统(四)

    2020.1.16 51Reboot 将在 2020.1.16日(今天) 21:00 为您带来分享主题<大佬教你如何从 ES 初学者到 ES专家> 直播链接(提前报名):https://k ...

  8. Go语言学习之11 日志收集系统kafka库实战

    本节主要内容: 1. 日志收集系统设计 2. 日志客户端开发 1. 项目背景     a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题     b. 当系统机器比较少时,登陆到服务器上查 ...

  9. 深入浅出ELK日志收集系统搭建

    先看一下目录图 背景 试想这么一种场景:Nginx负载了2个Tomcat,那么日志查看就很麻烦了,每次查看日志都要登录2台服务器,挨个搜索,2台还好,如果5台呢?10台呢?那查看日志就可费劲了,所以需 ...

最新文章

  1. JAVA基本数据类型、数据类型转换
  2. apache.camel_Apache Camel 2.16发布–十大亮点
  3. (1.1)HarmonyOS鸿蒙中Ability概念及意义
  4. 笨方法“学习python笔记之变量及打印
  5. 陕西省2021年高考成绩位次查询,2021年陕西高考个人排名怎么查询,陕西高考成绩排名查询方法...
  6. 利用课间10分钟,打造一个恶劣天气实时预警系统
  7. 一只青蛙跳向三个台阶_9. 变态跳台阶
  8. nginx 反向代理时丢失端口的解决方案(转)
  9. Linux字符设备驱动中container_of宏的作用
  10. 西南科技大学OJ题 11 And 11! 0259
  11. html 套壳成桌面应用
  12. MySql delete多表关联删除的使用方法
  13. PHP获取微信支付v2预支付参数prepay_id后在小程序端完成支付
  14. 买笔记本的13个验机步骤
  15. 计算机桌面托盘变竖了 怎样恢复,右键没有NVIDIA控制面板怎么恢复?ATI显卡右键控制面板如何还原?...
  16. 2022最新微信表白墙小程序源码+美观好看
  17. 屏山计算机学校,四川省屏山县职业技术学校
  18. axure 8 表格合并_如何在亚马逊创建变体案例 灵活运用拆分/合并变体及基础问题...
  19. 最新电脑为何不支持安装win7系统?原来秘密就藏在这里!
  20. 2017第十八届成都家具展 (中国西部国际博览城)会刊(参展商名录)

热门文章

  1. 两种解决win7系统的电脑出现开机黑屏的方法
  2. 【高低频融合网络:Pansharpening 】
  3. css什么是自适应布局,css 自适应布局阮一峰
  4. ubuntu+vscode+C/C++与单步调试
  5. 一条SQL更新语句的执行过程
  6. python取整的几种方法_Python取整的方法
  7. 微信js-sdk图片上传下载——java完整流程
  8. Linux 释放socket资源,LwIP使用select,close socket资源释放不完全问题
  9. What?!人工智能还没有人类四岁儿童聪明?
  10. JS获取元素的大小(高度和宽度)