android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中
来源:互联网 发布:回归分析 数据标准化 编辑:程序博客网 时间:2024/05/21 09:31
这篇博客分析的是logcat是如何获取logd中的log,然后写入文件。
一、设置保存log文件的路径
在手机刚开机的时候,会有类似如下命令执行
/system/bin/logcat -r 5120 -v threadtime -v usec -v printable -n 5 -f /data/local/log/logcat.log
/system/bin/logcat -r 5120 -v threadtime -v usec -v printable -n 5 -b radio -f /data/local/log/logcat-radio.log
/system/bin/logcat -r 5120 -v threadtime -v usec -v printable -n 5 -b events -f /data/local/log/logcat-events.log
我们先看下logcat的如何对这个命令的实现的,在其main函数中,对f命令的实现如下:
把文件名保存在g_outputFileName了,然后在main函数后面会调用setupOutput函数,我们来看下这个函数:
在这个函数中把文件的fd获取到了,是g_outFD。
最后我们可以在printBinary函数中往这个文件中写值。
也可以通过processBuffer来往文件写log。我们最后应该是通过processBuffer来写log的。
也就是上面的命令最终会把log保存在/data/local/log/logcat-radio.log文件下,当然这只是radio的log。
二、logcat获取logd中的log
而我们再看logcat的main最后是一个死循环,一直调用android_logger_list_read来从logd中获取log,然后再打印。
打印的话就是通过之前传进来的文件,写log到该文件的fd。
android_logger_list_read函数就是通过socket连接logd获取log。
三、总结
3.1 开3个进程保存不同log
我们手机上会开3个logcat进程来保存log,这3个进程会一直开着就是上面的死循环来不断保存log。
/system/bin/logcat -r 5120 -v threadtime -v usec -v printable -n 5 -f /data/local/log/logcat.log
/system/bin/logcat -r 5120 -v threadtime -v usec -v printable -n 5 -b radio -f /data/local/log/logcat-radio.log
/system/bin/logcat -r 5120 -v threadtime -v usec -v printable -n 5 -b events -f /data/local/log/logcat-events.log
3.2 kernel相关log
另外kernel的log是通过log_read_kern.c中的函数来实现的,而写的话通过logd_write_kern.c来实现的。
是通过节点来实现,而不是通过socket到logd实现的
节点:
dev/log/main
dev/log/radio
dev/log/system
dev/log/events
下篇博客我们主要说下logd是如何处理logcat的请求读log的。
原文地址: http://blog.csdn.net/kc58236582/article/details/51075591
- android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中
- android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中
- android 6.0 logcat机制(三)logd处理请求log
- android 6.0 logcat机制(三)logd处理请求log
- android 6.0 logcat机制(一)java层写log,logd接受log
- android 6.0 logcat机制(一)java层写log,logd接受log
- [Android]保存logcat到文件中
- android logcat日志保存到文件中
- 【小知识点总结】保存android日志logcat到文件中
- android 保存logcat信息到本地文件中
- Android--保存logcat到文件
- Android环境在C代码中使用logcat获取log
- Android JNI中增加LOGCAT,LOG
- 代码中读取android控制台Log(通过Logcat读取)
- 解读Android LOG机制的实现:(5)获取LOG的应用程序LogCat
- Logcat中添加kernal log
- LogCat日志重定向到文件中
- Logcat内容输入到指定文件中
- 数据库索引的深入浅出
- 数据库的基本SQL查询
- Linux下进行Redis安装以及一些redis配置
- Linux&&shell 总结 一
- PL/SQLDeveloper导入导出Oracle数据库方法
- android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中
- WebRTC实时通信系列教程8 打通P2P连接和信令通信
- 步进电机是否坏了怎么检查
- 如何搭建一个完整的视频直播系统?
- 初识 runtime
- PG10 Beat2的安装
- ZOJ 3761 —— Easy billiards(并查集+深搜)
- CopyOnWriteArrayList
- linux 动态库的显示调用