有一天晚上,看了两篇老罗的博客:《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