有一天晚上,看了两篇老罗的博客:《Android日志系统Logcat源代码简要分析》和《Android日志系统驱动程序Logger源代码分析》。
于是我就想android10 中 log 是怎么实现的?然后又看了一篇别人的博客:《Android10.0 日志系统分析》
算是勉强能看懂吧。
于是我再想要不模仿android10源码,实现一个简单的Log demo.
最后手贱的写了Log demo.
demo 地址:https://github.com/Hi-LookOut/Android/tree/master/android-log
项目结构如下:

如上图,android log 通信使用的是 socket通信。所以我剔除了源码中,复杂的初始化等流程,直接模仿了其socket通信的部分源码。
下面演示一下demo:
logService:
编译生成可执行文件:
clang++ -g ./*.cpp -I ./include -o ./main -std=c++11 -lpthread
运行:
./main

log_client
编译生成可执行文件:
clang++ -g ./*.cpp -I ./include -o ./log_client -std=c++11
运行:(支持多次运行)
./log_client

logcat
编译生成可执行文件:
clang++ -g ./*.cpp -I ./include -o ./logcat -std=c++11
运行:(支持多次运行)
./logcat -g
将日志内容重定向:
./logcat -g > ./log.txt


本文通过分析Android 10的日志系统,理解其工作原理,并模仿其实现了一个简易的日志Demo。该Demo采用socket通信方式,包括logService、log_client及logcat三部分。
&spm=1001.2101.3001.5002&articleId=127273933&d=1&t=3&u=9a3fbe8edf5a4edabe4dca125c53d785)
3090

被折叠的 条评论
为什么被折叠?



