android 日志方案研究

android 日志方案研究,第1张

概述android Log原理 对于android工程师,可能对于Log底层jni部分细节不需要具体了解,用一张图来了解其实现流程: 这里涉及到三个进程: APP进程:  调用Log的接口打日志,最终通过soctket通信发送给Logd进程 Logd进程:有一个缓冲区用于存储日志(环形缓冲区,当满时会冲掉旧的日志) Logcat进程:可以在adb shell中创建(可以创建多个),查看缓冲区中日志的进 androID Log原理

对于androID工程师,可能对于Log底层jni部分细节不需要具体了解,用一张图来了解其实现流程:

这里涉及到三个进程:

APP进程:  调用Log的接口打日志,最终通过soctket通信发送给Logd进程

Logd进程:有一个缓冲区用于存储日志(环形缓冲区,当满时会冲掉旧的日志)

Logcat进程:可以在adb shell中创建(可以创建多个),查看缓冲区中日志的进程(AndroID Studio的logcat也是一个Logcat进程)。


环形缓冲区是一个逻辑上的循环队列,写者可以往里面写东西,而一旦有内容会通知等待队列里的读者们来读取内容,否则等待队列列处于阻塞状态。 这就意味Logcat进程读取也是阻塞形式的。


基于缓存的日志方案

对于普通应用:实现一套自己的Log,将每次打的日志缓存起来。

对于系统应用:在应用中开启一起Logcat进程,不断的读取Logd进程中的日志到缓存中,当日质量达到一定的阈值后再刷如文件。这种方案可以搜集到所有应用的日志。

缺点:

1. 写文件 + 加密  会出现cpu峰值

2. 崩溃或者进程意外退出 缓存中的日志可能无法刷到文件中,关键崩溃信息可能丢失。


对于智能设备中专门做一个日志进程去搜集所有应用的日志,这种方案其实是简单可行的。


基于共享内存的方案


基于mmp的方案


参考:

https://blog.csdn.net/tencent_bugly/article/details/53157830

http://ju.outofmemory.cn/entry/224106

总结

以上是内存溢出为你收集整理的android 日志方案研究全部内容,希望文章能够帮你解决android 日志方案研究所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存