Android logcat log输出控制

2024-03-23 01:58
文章标签 输出 android 控制 log logcat

本文主要是介绍Android logcat log输出控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android logcat log输出控制

  • 常用logcat
  • logcat针对tag打印控制
  • log buffer大小设置
  • log黑白名单
  • log设置查看
  • 输出到文件
  • logcat指定格式输出
  • 常用logk命令打印kernel log
  • log buffer
  • logcat和logk进程的启动

常用logcat

清除log

logcat -c

指定pid的log输出

logcat --pid=<pid>

logcat针对tag打印控制

Android log 通过系统属性persist.log.tag 和persist.log.tag.xxx决定相关log的指定等级及以上才可以写入logd,xxx是指某个tag,不过这个系统属性只能设置5个,而且TAG长度不能太长。

禁止所有log tag 输出,设置所有log S等级及以上的log才能输出,S等级最高,V等级最低

   setprop persist.log.tag S

使能所有log tag 输出,设置所有log V等级及以上的log才能输出

   setprop persist.log.tag V

//禁止log tag 为 mytag 输出,设置log tag 为 mytag S等级及以上的log才能输出

   setprop persist.log.tag.mytag S 

//使能log tag 为 mytag 输出,设置log tag 为 mytag V等级及以上的log才能输出

  setprop persist.log.tag.mytag V 

使用组合1:只打开log tag为audio的log:

  setprop persist.log.tag Ssetprop persist.log.tag.audio V

使用组合2:只禁止log tag为audio的log:

  setprop persist.log.tag.audio S

附:等级有VERBOSE,DEBUG,INFO,WARN,ERROR,FATA,SILENT

log buffer大小设置

永久设置所有缓冲区大小为8M,重启生效

  setprop persist.logd.size 8M

暂时设置所有缓冲区大小为4M,立即生效,但是ACC OFF/ON后失效

  logcat -G 4M

暂时设置main缓冲区大小为4M,立即生效

  logcat -b main -G 4M

log buffer大小查看

  logcat -g

log黑白名单

logd丢失log会先删除黑名单的log,然后删除普通log。最后还不够的话再删除白名单的log。 设置黑白名单。可以对UID,PID设置,也可以UID/PID一起设置。设置黑名单,前缀~

指令说明
logcat -P ~520881 ~/78883 ~52189/8883对UID 520881,对PID78883,对UID/PID 52189/8883 设置黑名单。
logcat -P 520881/666对UID/PID 520881/666设置白名单
logcat -p查看黑白名单

log设置查看

指令说明
logcat -k查看当前允许输出的log等级
logcat -gog buffer大小查看
logcat -s “log_tag1” “log_tag2”只允许某些log_tag输出
logcat “log_tag1:s” “log_tag2:s”不允许某些log_tag输出
logcat -b xxx查看xxxbuffer 的 log,logbuffer环形缓冲区在system/core/include/log/log.h中log_id中定义。有main,radio,event,system,crash,security,error,perf,kernel
logcat -b main查看main buffer log ,是我们平时正常使用的buffer,
logcat -b crash程序crash相关的log

输出到文件

logcat -v threadtime -f /data/log/log -r2048 -n 49 //-v :threadtime格式输出,-f指创建文件 /data/log/log,-r2048指每个文件大小20485k,-n 49 创建49+1个文件

logcat指定格式输出

设置输出格式的日志消息。默认是短暂的格式。支持的格式列表

logcat -v <format>
格式说明
brief显示优先级/标记和过程的PID发出的消息(默认格式)
process只显示PID
tag只显示优先级/标记
raw显示原始的日志消息,没有其他元数据字段
time调用显示日期、时间、优先级/标签和过程的PID发出消息
threadtime调用显示日期、时间、优先级、标签遗迹PID TID线程发出的消息
long显示所有元数据字段与空白行和单独的消息

常用logk命令打印kernel log

指令说明
logk -e 0关闭 kernel log 输出,user版默认为0
logk -e 1使能 kernel log 输出
logk -p查看 kernel log 状态
logk -f 文件打印 kernel log 到文件

log buffer

logd读取logdw时会对超过对应Android 原生 id(main,system etc)buffer大小进行裁剪,buffer大小在LogBuffer.cpp中"persist.logd.size","ro.logd.size"系统属性设置。该系统属性在device/fsl/tamago_1t(other)/BoardConfig.mk中ADDITIONAL_BUILD_PROPERTIES += ro.logd.size=2048k设置。

logcat和logk进程的启动

logcat输出log到文件,系统启动时会在init.rc: service elog_service /system/bin/logcat -v threadtime -f /data/log/log -r2048 -n 49(-v :threadtime格式输出,-f指创建文件 /data/log/log,-r2048指每个文件大小20485k,-n 49 创建49+1个文件)启动system/bin/logcat进程,该进程会一直在后台运行并读取logdr socket 的log。当有一个文件log写满的时候logcat.cpp中rotateLogs()函数就会对这些log文件进行循环滚动更新,由于log文件有0~49个,所以每次循环49次,因此循环次数#define DEFAULT_MAX_ROTATED_LOGS 49,kernel log则由logk负责输出不过log来源从kmsg文件中读取,init.rc中启动logk指令 service logk_service /system/bin/logk -f /data/log/kernel_log,logk.cpp中rotateLogs循环更新个数为4,所有输出kernellog0~4。

这篇关于Android logcat log输出控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/836783

相关文章

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D