Logcat使用指南

2024-06-12 16:58
文章标签 使用指南 logcat

本文主要是介绍Logcat使用指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Logcat使用指南


adb logcat 命令格式 : adb logcat [选项] [过滤项] 
其中“选项”和“过滤项”在[]中, 说明这是可选的

推荐进入的方法是: 
adb shell 回车 
logcat xxxx

logcat的“选项”:

  • "-s"选项 : 设置输出日志的标签, 只显示该标签的日志; 
  • "-v"选项 : 设置日志的输出格式, 注意只能设置一项; "-c"选项 : 清空所有的日志缓存信息; 
  • "-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞; "-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞; "-g"选项 : 查看日志缓冲区信息; 
  • "-b"选项 : 加载一个日志缓冲区, 默认是 main;
  • "-B"选项 : 以二进制形式输出日志; 
 
  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.activity_main);
  5. Log.d(TAG, "onCreate: debug");
  6. Log.i(TAG, "onCreate: info");
  7. Log.e(TAG, "onCreate: error");
  8. }

1. 操作符:-s: 
logcat -s ddd (筛选ddd标签的内容) 
结果:

shell@ha3g:/ $ logcat -s ddd
--------- beginning of system
--------- beginning of main
D/ddd     ( 7506): onCreate: debug
I/ddd     ( 7506): onCreate: info
E/ddd     ( 7506): onCreate: error

这里继续操作,如果出现了ddd标识的log,那么仍旧会继续显示。ctrl+c 可以让其中断。

2. 操作符:-g 
logcat -g 查看log缓冲区 
结果:

130|shell@ha3g:/ $ logcat -g
main: ring buffer is 2Mb (414Kb consumed), max entry is 5120b, max payload is 4076b
system: ring buffer is 256Kb (66Kb consumed), max entry is 5120b, max payload is 4076b

3. 操作符:-d 
logcat -d 一次性显示之前的日志内容,显示完毕后就结束停止了。这里我利用-s的组合进行筛选之前被ddd标记的log,输出结果后终端:

shell@ha3g:/ $ logcat -d -s ddd
--------- beginning of system
--------- beginning of main
D/ddd     ( 7506): onCreate: debug
I/ddd     ( 7506): onCreate: info
E/ddd     ( 7506): onCreate: error

这里可以选择缓冲区类型,规则是这样的:logcat -d [缓冲区类型]。 
比如上面没有加类型参数,所以显示了一个system和main,缓冲区有: 
system缓冲区 - 与系统相关的日志信息; 
radio缓冲区 - 广播电话相关的日志信息; 
events缓冲区 - 事件相关的日志信息; 
main缓冲区 - 主的缓冲区,上面显示的就是main缓冲区中的内容。上面的命令和下面的等价:

logcat -s ddd -d main

130|shell@ha3g:/ $ logcat -s ddd -d main
--------- beginning of main
--------- beginning of system
D/ddd     ( 7506): onCreate: debug
I/ddd     ( 7506): onCreate: info
E/ddd     ( 7506): onCreate: error

4. 操作符:-c 
清空之前的所有log,和as中log面板中的垃圾桶是一个作用。 
logcat -c

5. 操作符:-v 
logcat -v 设置log的格式。这里的格式只能设置下列的某一种,不可设置多种格式。

1.time 添加log的时间,注意这里的时间没有年份。

130|shell@ha3g:/ $ logcat -v time -d -s ddd
--------- beginning of system
--------- beginning of main
12-10 16:49:33.731 D/ddd     ( 7506): onCreate: debug
12-10 16:49:33.731 I/ddd     ( 7506): onCreate: info
12-10 16:49:33.731 E/ddd     ( 7506): onCreate: error

2.brief 默认的log输出样式,上文中的展示的都是这种格式。

shell@ha3g:/ $ logcat -v brief -d -s ddd
--------- beginning of system
--------- beginning of main
D/ddd     ( 7506): onCreate: debug
I/ddd     ( 7506): onCreate: info
E/ddd     ( 7506): onCreate: error

3.thread 带(进程id:线程id)的log信息:

shell@ha3g:/ $ logcat -v thread -d -s ddd
--------- beginning of system
--------- beginning of main
D( 7506: 7506) onCreate: debug
I( 7506: 7506) onCreate: info
E( 7506: 7506) onCreate: error

4.tag 仅仅带有tag的log信息:

shell@ha3g:/ $ logcat -v tag -d -s ddd
--------- beginning of system
--------- beginning of main
D/ddd     : onCreate: debug
I/ddd     : onCreate: info
E/ddd     : onCreate: error

5.long 完全体的log信息:

130|shell@ha3g:/ $ logcat -v long -d -s ddd
--------- beginning of system
--------- beginning of main
[ 12-10 16:49:33.731  7506: 7506 D/ddd      ]
onCreate: debug
[ 12-10 16:49:33.731  7506: 7506 I/ddd      ]
onCreate: info
[ 12-10 16:49:33.731  7506: 7506 E/ddd      ]
onCreate: error

6.raw 精简样式,仅仅输出info信息,连tag都没有:

130|shell@ha3g:/ $ logcat -v raw -d -s ddd
--------- beginning of main
--------- beginning of system
onCreate: debug
onCreate: info
onCreate: error

7.process 优先级样式,这个样式的tag在最后:

shell@ha3g:/ $ logcat -v process -d -s ddd
--------- beginning of main
--------- beginning of system
D( 7506) onCreate: debug  (ddd)
I( 7506) onCreate: info  (ddd)
E( 7506) onCreate: error  (ddd)

6.操作符 -t 
输出最近的n条log信息,输出后中断命令立刻结束。 
logcat -t 1000 (输出最近的1000条信息) 
测试:

shell@ha3g:/ $ logcat -d -t 1000 -s ddd
--------- beginning of system
--------- beginning of main
D/ddd     ( 7506): onCreate: debug
I/ddd     ( 7506): onCreate: info
E/ddd     ( 7506): onCreate: error

过滤选项

其实在上面我们就已经用过了过滤选项-s了,他可以用来过滤某个标签,下面详细说下具体的过滤规则。 
可以过滤的选项,级别,tag,关键字。

1.级别 
V : Verbose (明细); 
D : Debug (调试); 
I : Info (信息);  
W : Warn (警告); 
E : Error (错误); 
F : Fatal (严重错误); 
S : Silent(Super all output) (最高的优先级, 记录前所未有的错误); 
此外,如果你查看的级别为d,那么d,i,w,e..的高级别log都能被看到,原则是低级别可以看到高级别的信息,高级别看不到低级别的信息。

过滤级别的写法:logcat *:级别,比如:logcat *:E 或locat *:e (不区分大小写)

shell@ha3g:/ $ logcat *:E
--------- beginning of main
E/MultiWindowConverter( 3016): getApplicationName is error:Starting kale.myapplication
E/PersonaManagerService( 3016): inState():  stateMachine is null !!
E/ddd     ( 7506): onCreate: error

上面的*:E中的星号表示通配符,可以写任何tag,比如:ddd

2.tag

130|shell@ha3g:/ $ logcat ddd:E *:S
--------- beginning of main
--------- beginning of system
E/ddd     ( 7506): onCreate: error

这里需要注意,输入了tag后就必须添加 *:S的尾缀,否则出错。

我们仍旧可以扩展这个格式,进行多个级别和tag的筛选 
logcat ddd:E ddd:D *:S (过滤tag为ddd的两个级别的日志)

130|shell@ha3g:/ $ logcat ddd:E ddd:D *:S
--------- beginning of main
--------- beginning of system
D/ddd     ( 7506): onCreate: debug
I/ddd     ( 7506): onCreate: info
E/ddd     ( 7506): onCreate: error

3.关键字 
我们可以通过grep来过滤关键字,这样更加灵活。 
写法:logcat | grep 关键字 
比如:logcat | grep ddd(只能识别小写的ddd) 
logcat | grep i ddd(无论是DDD,ddD,ddd...都可以被识别)

130|shell@ha3g:/ $ logcat -d | grep ddd
D/ddd     ( 7506): onCreate: debug
I/ddd     ( 7506): onCreate: info
E/ddd     ( 7506): onCreate: error
D/MainActivity( 7506): ║ ddd                                                   

grep是支持正则表达式的,所以可以用正则的写法。

用代码执行上面的命令行

AndroidManifest.xml添加读取权限  

清除日志

 
  1. try {
  2. Runtime.getRuntime().exec("logcat -c");
  3. } catch(Exception e) {}
  4. // 获取日志
  5. try {
  6. ArrayList<String> commandLine = new ArrayList<String>();
  7. commandLine.add( "logcat");
  8. commandLine.add( "-d");
  9. commandLine.add( "-v");
  10. commandLine.add( "time");
  11. commandLine.add( "-s"); //-s其实就是*:S
  12. commandLine.add( "tag:W");
  13. Process process = Runtime.getRuntime().exec( commandLine.toArray( new String[commandLine.size()]));
  14. BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream()), 1024);
  15. String line = bufferedReader.readLine();
  16. while ( line != null) {
  17. log.append(line);
  18. log.append("\n")
  19. }
  20. } catch ( IOException e) {
  21. }

其实就是执行了 logcat -d -v time -s tag:W 这个命令

这篇关于Logcat使用指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Maven使用指南的笔记

文档索引 Maven in 5 Minutes 篇幅很短,快速上手,不求甚解。 执行如下命令,创建项目的基础配置。 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1

Android的logcat日志详解

Android log系统 logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息。下面介绍 adb logcat中的详细参数命令以及如何才能高效的打印日志,或把日志保存到我们指定的位置。 可以输入 adb logcat --help,查看一下一些简单的数据格式: adb logcat --help 输出结果: Usage: logcat [

OWASP ZAP2.4.3使用指南(中文版)

OWASP ZAP是一款开源的web安全工具,它简单易用,与burp suite相似,主要功能包含了:代理、数据拦截修改、主动扫描、被动扫描、主动攻击、爬虫、fuzzing、渗透测试等。在国外安全圈和渗透测试领域应用非常广泛,在youtube上有许多关于ZAP的视频资料。与burp suite相比,前者是一款商业渗透测试工具,部分功能不能使用,国内的大部分使用者都使用的破解版,而ZAP是开源免费的

Circuitjs 在线电路模拟器使用指南

Circuitjs 是一款 web 在线电路模拟器, 可以在浏览器上方便地模拟各种模拟或数字的电路, 用户无需安装各种软件, 生成的电路也支持在线分享给其它用户. 网址是 https://cc.xiaogd.net/. 当前版本为 v2.9.0 cc 为 circuit 的简写, 也即是电路的意思. 版本说明 在模拟器右侧栏增加了版本的说明. 另外, 在 菜单--关于 的弹出窗

Linux IPC 资源管理:ipcs和 ipcrm使用指南

文章目录 0. 引言1. IPC 资源概述2. 查询 IPC 资源2.1 使用 `ipcs` 查询 IPC 资源2.2 查询特定 IPC 资源2.3 查询系统 IPC 参数 3. 修改 IPC 系统参数4. 清除 IPC 资源5. 实践应用5.1 查询用户的消息队列5.2 查找未被清理的消息队列 0. 引言 进程间通信(IPC)允许不同的进程共享数据或进行同步操作。Linux

EventBus-Vue事件总线解析与使用指南

前言         在Vue.js中,组件通信是开发过程中非常场景的需求。根据不同的场景和需求,Vue提供了多种组件通信方式。比如父子组件通信、兄弟组件通信、跨代组件通信等。当应用程序中两个组件或者说页面之间没有引入和被引入的关系的时,或者说他们之间嵌套的结果复杂的时候,我们可以考虑如何传递数据呢?         其中适用的通信方式有 Vuex、provide 和 inject、Event

Vuex Module Decorators 使用指南

vuex-module-decorators 是基于 TypeScript 的 Vuex 装饰器库,它允许我们使用装饰器模式编写模块化的 Vuex 代码,使得代码更加简洁和可维护。对于 Vue.js 项目,尤其是使用 TypeScript 的项目,vuex-module-decorators 提供了一种更优雅的方式来组织 Vuex store。 在本文中,我们将介绍如何使用 vuex-modul

Android中的JNI使用指南一

一、简介 JNI全称是Java Native Interface(Java本地接口)单词首字母的缩写,本地接口就是指用C和C++开发的接口。由于JNI是JVM规范中的一部份,因此可以将我们写的JNI程序在任何实现了JNI规范的Java虚拟机中运行。同时,这个特性使我们可以复用以前用C/C++写的大量代码。    开发JNI程序会受到系统环境的限制,因为用C/C++语言写出来的代码或模块,编译过

apicloud+Vue.js使用指南(源码+设计思路)

源码: <html><head><!-- 头部代码省略 --></head><body><div id="app"><div class="title"><div :style="{'height':(top+'px')}"></div><div @click="look">{{authorInfo}}</div></div></div></body><script type="t

【正点原子K210连载】第三十四章 image图像滤波实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第三十四章 image图像滤波实验 在上一章节中,介绍了image模块中元素绘制方法给的使用,本章将继续介绍image模块中图像滤波方法的使用。通过本章的学习,读者将学习到image模块中图像滤波的使用。 本章分为如下几个小节: 34.1 image模块图像滤波方法介绍 34.2 硬件设计 34.3 程序设计 34.4 运行验证 34.1 image模块图像滤波方法介绍 image模块为Ima