-
功能
-
日志系统
-
说明
- 安卓的日志系统是由系统进程
logd
进行管理. logd
将部分日志通过循环链表缓存.
- 安卓的日志系统是由系统进程
-
缓存
- 日志缓冲集合:
main,crash,system
等进行分类,缓冲区大小固定,系统确定缓冲区大小. - 日志分等级:方便根据等级对日志过滤.
VERBOSE<DEBUG<INFO<WARNING<ERROR<FATAL
.
- 日志缓冲集合:
-
日志
- 输出一般会格式化,格式化会标注出原始信息,以区分由日志工具添加的信息.
-
日志系统的编程接口
-
c
- 通过
liblog
,头文件定义在android/log.h
. - 常用上层接口是
__android_log_write
.函数实现是__android_log_logd_logger
,一般是socket
. api 30
过后可以用__android_set_log_writer
切换输出目标.
- 通过
-
Java
Log
类.
-
参数格式
Log.X(tag,msg)
.tag
一般是activity
或者app
之类用于标记某个应用或activity
的,msg
是真实信息.
-
完整参数
__android_log_buf_write(int bufID, int prio, const char *tag, const char *text)
-
参考链接
-
输出
logcat
对日志进行二次格式化.美化后方便阅读.
-
-
日志过滤四类
-
-
指令
-
logcat
-
前言
-
选项
-
-b buffer
- 查看指定日志缓冲池
-
-c,--clear
- 清理指定缓冲区并退出.
- 清理默认缓冲池.
-
-e expr | --regex=expr
- 正则表达式输出,匹配
msg
.
- 正则表达式输出,匹配
-
-m count | --max-count=count
- 输出
n
行后停止.
- 输出
-
--print
- 和
--regex,--max-count
一起使用. - 伪代码
def print(arg,n): index = 0 while index < n: data = log.read() if re.match(arg,data): index += 1 print(data)
- 和
-
-f fliename
- 输出到文件,默认
stdout
.重定向时需注意.
- 输出到文件,默认
-
-g --bufer-size
- 查看各个日志缓冲池的大小.
-
-n count
- 设置循环队列大小.默认
4
.
- 设置循环队列大小.默认
-
-r kbytes
- 设置循环队列大小.
16kbytes
.
- 设置循环队列大小.
-
-s
- 不输出.
-
-v format
- 指定输出日志的格式化形式.
-
-c
- 清理所有日志缓存并推出.
-
-t count
- 输出最新的
n
条.
- 输出最新的
-
-t 'time'
- 指定时间开始输出.
-
--pid=pid
- 输出指定
pid
的日志.
- 输出指定
-
-
输出简介
-
tag
- 对日志的标记,简单的介绍.
-
priority
- 日志的优先级.
VERBOSE<DEBUG<INFO<WARNING<ERROR<FATAL
- 一般是用首字母显示.
-
demo
## logcat -v brief output I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
I
表示优先级ActivityManager
表示输出tag
.585
进程号,:
后的则是信息.
-
过滤
tag:priority
tag
可以是正则.
-
过滤与环境变量
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
设置.logcat
默认参数,避免重复编写.
-
-
-
输出格式化
-v
logcat
最新推荐文章于 2023-09-23 10:45:21 发布