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

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class