android 保存日志_APP如何高效保存日志

本文探讨了Android应用程序中日志保存的挑战和常见方案,包括实时日志记录的性能问题,以及如何通过内存缓存、数据压缩和mmap技术优化日志存储。手淘app采用了mmap减少I/O操作,以及基于zstd的压缩算法,结合字典压缩提升效率,同时处理了SD卡适配和异常情况下的日志保存。
摘要由CSDN通过智能技术生成

有过嵌入式开发经验的都知道日志的存储是个比较麻烦的问题。之前ARM开源了一款项目:cmbacktrace,github地址就不贴了,可以将crash时的堆栈信息进行保存。但是对于手机app来说,光保存程序崩溃时的日志信息时远远不够的,根本无法定位到具体原因。在讲解淘系使用的日志系统之前,先看一下最通用的日志系统。

通用方案一

主流的日志模块比如logback,是属于实时日志记录系统,也就是每产生一句日志就进行加密存入磁盘文件。这样有个缺点就是I/O过于密集占用大量CPU资源,影响程序性能,极易卡顿。一般使用与app开发调试阶段,正式发版肯定要把log功能关闭,等用户产生程序崩溃等反应问题时,才重新打一个调试包进行复现。但是很多时候场景不完全相同,很难复现问题。前文有讲过cache数据与磁盘数据之间的关系:

进程是如何使用内存的?​mp.weixin.qq.com
d0aa1a262dc01f2b8507609dbabd1708.png

326c81d3753dfa606b7f437859323ac2.png

程序写文件操作的时候,并不是直接操作磁盘里的文件,而是先把数据写入系统缓存,也就是脏页中,然后操作系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值