Logcat 的使用方法详解

AndroidStudio - 新版本 Logcat 使用详解 关于日志中的大部分含义我们还是都清楚的,但为了行知统一,简单说明一下(可结合预览日志视图一起学习)左边到右:时间戳 → 进程id → tag标识 → 包名 → 日志级别 → 具体信息这里支持动态显示预览结果,可直接通过选择与否,设置自己喜欢的日志信息。 阅读详情
做android有些日子了,不过对基本的logcat的详细用法还是很模糊,今天有空,学习一下。

logcat可以在adb中使用,也可以直接在命令行下使用。
 
logcat [options] [filterspecs] 
logcat的选项包括: 
  -s                      默认设置过滤器,如指定'*:s'. 
  -f <filename>    输出到文件,默认情况是标准输出.
  -r [<kbytes>]    循环log的字节数(默认为16),需要-f.
  -n <count>       设置循环log的最大数目,默认是4
  -v <format>      设置log的打印格式,  <format> 是下面的一种: 
                            brief process tag thread raw time threadtime long.
  -c                      清除所有log并退出.
  -d                     得到所有log并退出 (不阻塞).
  -g                     得到环形缓冲区的大小并退出. 
  -b <buffer>      请求不同的环形缓冲区('main' (默认), 'radio', 'events').
  -B                     输出log到二进制中.

 

1.  日志过滤器设置
  每一个输出的Android日志信息都有一个标签和它的优先级.
  日志的标签是系统部件原始信息的一个简要的标志。(比如:“View”就是查看系统log的标签,“RFID_HAL”就是查看RFID的HAL层log的标签)。
  优先级有下列集中,是按照从低到高顺利排列的:
  V — Verbose (lowest priority)
  D — Debug
  I — Info
  W — Warning
  E — Error
  F — Fatal
  S — Silent (highest priority, on which nothing is ever printed)无log打印

  在运行logcat的时候在前两列的信息中你就可以看到 logcat 的标签列表和优先级别,它是这样标出的:<priority>/<tag>.
  下面是一个logcat输出的例子,它的优先级就似乎I,标签就是ActivityManage:
  I/ActivityManager(  585): Starting activity: Intent { action=android.intent.action...}
  
  过滤器语句按照下面的格式描述:tag:priority, tag 表示是标签,priority是表示标签log的最低等级, 
  你可以在过滤器中多次写tag:priority。
  
  例如:adb logcat ActivityManager:I MyApp:D *:S  或者 adb logcat -s ActivityManager:I MyApp:D
  上面表达式的最后的元素 *:S ,,是设置所有的标签为”silent”,所有日志只显示有”ActivityManager”和“MyApp”的,用 *:S 的另一个用处是能够确保日志输出的时候是按照过滤器的说明限制的,也让过滤器也作为一项输出写到日志中。
  
2.  log输出格式设置
  可以修改日志的输出格式,所以可以显示出特定的元数据域。可以通过 -v 选项得到格式化输出日志的相关信息。
  
  brief — Display priority/tag and PID of originating process (the default format).
  process — Display PID only.
  tag — Display the priority/tag only.
  thread — Display process:thread and priority/tag only.
  raw — Display the raw log message, with no other metadata fields.
  time — Display the date, invocation time, priority/tag, and PID of the originating process.
  long — Display all metadata fields and separate messages with a blank lines.
  例子:
  brief -- P/tag (876): message  (默认格式)
  process -- (876): message
  tag -- P/tag: message
  thread -- P/tag( 876:0x37c) message
  raw -- message
  time -- 09-08 05:40:26.729 P/tag ( 876): message
  threadtime -- 09-08 05:40:26.729 876 892 P/tag : message
  long -- [ 09-08 05:40:26.729 876:0x37c P/tag ] message

 

3.  查看可用日志缓冲区
  Android日志系统有循环缓冲区,并不是所有的日志系统都有默认循环缓冲区。
  [adb] logcat [-b <buffer>]
  radio —  查看和radio telephony相关的缓冲区
  events —  查看和事件相关的的缓冲区
  main —   查看主要的日志缓冲区
  
4. log源码头文件
 4.1 java
   事实上LogCat的功能是由Android的类android.util.Log决定的,在程序中log的使用方法如下所示: 
   Log.v() -------------------- VERBOSE 
   Log.d() -------------------- DEBUG 
   Log.i() -------------------- INFO 
   Log.w() -------------------- WARN 
   Log.e() -------------------- ERROR 
   以上log的级别依次升高,Debug信息应当只存在于开发中,INFO、 WARN、ERROR这3种log将出现在发布版本中。

   对于Java类,可以声明一个字符串常量TAG,LogCat可以根据它来区分不同的log.
   例如,在计算器(Calculator)的类中,定义如下所示: 
   public class Calculator extends Activity { 
   /* ...... */ 
       private static final String LOG_TAG = "Calculator"; 
       private static final boolean DEBUG  = false; 
       private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV; 
   /* ...... */ 
     由此,所有在Calculator中使用的log,均以“Calculator”为开头。
   
  4.2 FW and HAL
     JNI层代码需包含头文件frameworks/base/include/utils/Log.h,实际上这个头文件include了HAL层代码使用的头文件system/core/include/cutils/log.h
     //#define  NDEBUG
     //#define  LOG_NDEBUG  0
     #define  LOG_TAG  "RFID_HAL"
   #include <cutils/log.h>
   
   这里对能够输出Verbose级别的log的设置,逻辑上有点反,实际上在log.h文件开始就有如下定义:
   #ifndef LOG_NDEBUG
   #ifdef NDEBUG
   #define LOG_NDEBUG 1
   #else
   #define LOG_NDEBUG 0
   #endif
   #endif
   
   #ifndef LOG_TAG
   #define LOG_TAG NULL
   #endif
   默认情况下,LOG_NDEBUG = 0
   
   下面是和Verbose基本的log相关的宏定义:
   #ifndef LOGV
   #if LOG_NDEBUG
   #define LOGV(...)   ((void)0)
   #else
   #define LOGV(...) ((void)LOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))// 只有在为0的情况下这个宏才有意义
   #endif
   #endif
   
   #define CONDITION(cond)     (__builtin_expect((cond)!=0, 0))
   
   #ifndef LOGV_IF
   #if LOG_NDEBUG
   #define LOGV_IF(cond, ...)   ((void)0)
   #else      // 只有在为0的情况下这个宏才有意义
   #define LOGV_IF(cond, ...) /
       ( (CONDITION(cond)) /
       ? ((void)LOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) /
       : (void)0 )
   #endif
   #endif
   
   ...
   #ifndef IF_LOGV
   #if LOG_NDEBUG
   #define IF_LOGV() if (false)
   #else
   #define IF_LOGV() IF_LOG(LOG_VERBOSE, LOG_TAG)
   #endif
   #endif

   综上,代码中如果需要打开VERBOSE级别的log,只需要定义#define  LOG_NDEBUG  0或者干脆不要定义;如果需要关闭VERBOSE级别的log,可以定义#define  LOG_NDEBUG  1或者#define  NDEBUG,二者选一即可。
   
参考文件:
   http://blog.youkuaiyun.com/czbever/archive/2010/09/27/5910640.aspx
   http://jiahuhuan.blog.163.com/blog/static/13024124620099179491291/
   http://www.javaeye.com/topic/477112

C++cgal库配置+VS2017 Cgal几何图形库在VS2017上的下载、安装与配置。想要一口气下载完所有安装配件的,可以去文章末尾的链接。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。 阅读详情

相关推荐

NoUnityCN:绕过地域限制,从Unity官方CDN直链下载全版本编辑器

在软件开发和游戏制作领域,内容分发网络(CDN)是保障全球用户高速、稳定获取大型文件的核心基础设施。其原理是通过将资源缓存至遍布各地的边缘节点,使用户能从地理距离最近的服务器获取数据,从而显著提升下载速度并降低源站压力。这一技术对于需要频繁下载大型开发工具(如游戏引擎)的团队而言,价值在于能确保开发环境部署的一致性与效率,是构建自动化CI/CD流水线和团队协作的基础。然而,当开发者因网络策略或地域限制无法直接访问官方CDN时,获取安装文件便成为阻碍工作流的痛点。NoUnityCN项目正是针对此场景的工程实践

weixin_33473110的博客 312

打开Android C文件中的LOG

打开Android C文件中的LOG 可以一次打开LOGV,LOGI,LOGD,也可以分别打开: #undef NDEBUG       //打开LOGV/LOGI/LOGD #define LOG_NDEBUG   0  //打开LOGV #define LOG_NIDEBUG  0  //打开LOGI #define LOG_NDDEBUG 0 //打开LOGD

oman111的专栏 1101

硬件工程师入门进阶,一文搞懂,看这篇就对了

每家公司的datasheet都有严格的规范,及独特的风格,有时候还会穿插一些原理性的介绍,比如ADI公司的一些ADC/DAC器件资料里面,还会包含AD/DA转换的原理性讲解内容,Datasheet既可以是我们设计上的好帮手,也是学习的好资料。在出货量大的产品中,尽量减少物料种类,比如开头说的,1%的电阻不得不用,那么5%的替换成1%的,物料种类就减少一种,量就大了,能不能争取更优的价格呢?如果说前面学的是内功,那这一关,是招式、是工具的使用,原理图和PCB设计都有对应的工具,教程也很多,且比较容易上手。

一路带飞的博客 5万+

系统日志开关

native日志打印开关

zjy764219923的专栏 1690

uniapp [全端兼容] - 实现省市区选择器三四级联动组件,uniapp选择地址自定义省市区三级联动插件,弹框式多级联动选择器区域选择(全平台兼容苹果安卓App、支付宝微信小程序、移动端H5网页)

uni-app省市区选择器,省市区街道三级四级联动选择器,uniapp自定义多列选择器省市两级联动,uniapp picker组件实现多级联动,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniApp选择器省市区县街道乡镇,uniapp实现省市区选择联动,uniapp城市三级联动(自定义组件)_uniapp三级联动,picker插件省市区联动,uniapp小程序省市区选择器,uni-app 省市区街道的四级联动选择,uniapp怎样实现省市区地址三级联动uni

🏆 前端领域优质创作者 1万+

Python 爬虫实战:Boss直聘 Python 岗位招聘数据爬取

本文介绍了一个Python爬虫项目,用于抓取Boss直聘平台的Python岗位招聘数据并进行可视化分析。项目采用requests库发送POST请求,通过抓包分析获取JSON接口,绕过HTML解析直接获取结构化数据。主要内容包括: 接口分析:找到关键POST接口,解析请求头和JSON参数格式 环境准备:安装requests/pandas/matplotlib/pyecharts等依赖库 核心实现: 手动获取登录Cookie 构建请求头和城市代码映射 实现分页抓取职位列表数据 项目特色在于直接解析JSON接口而

u014481728的博客 296

Android logcat命令详解

一、logcat命令介绍 1.android log系统 2.logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息 log类是一个日志类,可以在代码中使用logcat打印出消息 常见的日志纪录方法包括: 方法 描述 v(String,String) (vervbose) 显示全...

weixin_30245867的博客 4145

00 — Intel xe SVM 内核实现精读系列专栏导读

本文系统介绍了Intel Xe GPU的共享虚拟内存(SVM)实现机制。第一部分通过概念地图阐述SVM的六个核心概念及其关系;第二部分通过三个测试用例解析SVM关键功能:fault生命周期验证、madvise与VRAM迁移、跨GPU一致性;第三部分深入内核实现,包括初始化/销毁流程、Page Fault处理、MMU Notifier失效路径、异步垃圾回收、VRAM迁移机制、madvise实现原理,以及与ROCm SVM的对比。文章建议按功能模块顺序学习,从基本概念到测试用例,再深入内核实现细节,最后对比不同

图形/计算GPU的驱动与虚拟化技术分享园地 1667

android 日志系统中LOG_NDEBUG宏的作用

log.h文件: /*  * Normally we strip ALOGV (VERBOSE messages) from release builds.  * You can modify this (for example with "#define LOG_NDEBUG 0"  * at the top of your source file) to change that beh

bob_fly1984的专栏 1万+

[QMT和ptrade量化交易小白入门]-121、如何用K-means聚类,每月自动筛选高流动性ETF

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 827

药物代谢仿真软件:PKSim_(6).案例研究与实践应用

通过本章的案例研究和实践应用,我们展示了如何利用PKSim软件构建药物动力学模型、进行参数估计、仿真预测和结果分析。这些方法不仅有助于优化药物代谢研究过程,还可以在药物研发中提供重要的数据支持。通过模型的构建和验证,我们可以更好地理解药物在体内的动态变化过程,为临床试验和药物治疗提供科学依据。

kkchenjj的博客 655

adb logcat 详解

一、logcat命令介绍 1.android log系统   2.logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息 log类是一个日志类,可以在代码中使用logcat打印出消息 常见的日志纪录方法包括: 方法 描述 v(String,String) (verv

一介码农 1万+

Qt软件开发-Qt编译zlib完成文件压缩解压(win10)

在软件开发中进行有需求需要将生成的一些文件打包上传到服务器,或者从服务器下载压缩包下来内部解压。或者自己做一些打包工具,那么使用zlib开源就可以很方便的完成。接下来介绍在zlib在windows下如何利用Qt进行编译,调用,介绍mingw、msvc,32/64位编译办法,完成zip文件打包生成例子。可以单文件压缩打包,多文件压缩打包,目录压缩打包等等。

2216

logcat的基本使用

一、logcat命令介绍 1.android log系统 2.logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息。 Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用.  LogCat可以实时的捕捉系统中的log信息,这样在测试过程中

xiaona0523的专栏 4111

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android的Log组件和logcat命令

转自:http://kyfxbl.iteye.com/blog/1244703 adb logcat -d -v time -s MainActivity:I  -d 不阻塞,执行完退出(去掉-d为有日志即输出) -v time 输出格式为时间+信息 -s MainActivity  输入标签为“MainActivity”的日志 :I 日志级别为“I”以上的日志 注:日志级

obmeflbj的专栏 911

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

adb logcat教程

1.速查 $adb logcat -g     //打印和缓冲区使用情况 $adb logcat -c main //清除main缓存区 $adb logcat -v threadtime -f /data/camera.log | grep -Ei "camera | daemon" -v threadtime 输出格式 ,默认是 brief -f...

banyinlve3147的博客 1152

Logcat命令详解

Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用. 在使用logcat之前,请确保手机的USB调试模式已经开启,可以通过"Setting->Application->Development->USB debugging"来开启。 logcat本身是android的shell的一个命

suphy2009的专栏 845

adb logcat命令详解

一、logcat命令介绍 1.android log系统   2.logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息 log类是一个日志类,可以在代码中使用logcat打印出消息 常见的日志纪录方法包括: 方法 描述 v(String,String) (vervbose) 显示全部信息 ...

zhuawalibai的博客 9421

android日志工具LogCat的使用

在Eclipse中显示LogCat点击Eclipse导航栏中的Window ——>Show View ——>Other,在弹出的Show View对话框中选择Android目录下的LogCat,点击OK,这样LogCat就显示在Eclipse中了。使用日志工具类Log。Android中的日志工具类Log(android.util.Log),提供了一下几种方法打印日志内容: Log.v() 打印意义

sywyg 6万+

adb logcat 基本用法

入门android ,至少需要了解 adb 吧,那么打 log 也是必不可少的了。 下面简单介绍一下 adb logcat 基本用法: Usage: logcat [options] [filterspecs]options include: -s Set default filter to silent. Like specify...

weixin_30521161的博客 84

用adb logcat抓取log

http://blog.csdn.net/yuxingxing198812/article/details/13000263 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志     状态信息的有:adb shell dmesg,adb shell dumpstate,adb shell d

onionde的专栏 1319

logcat的命令行参数

【Android】logcat的命令行参数 adb logcat -s "tag:*" ——输出指定tag的所有基本的信息 adb logcat -s "tag:I" ——输出指定tag的所有info级别的信息。其他可用级别见最后 adb logcat -f log.txt 将日志信息保存到log.txt文件中   可用的级别: V    Verbose  D    Debug  

专栏 7021

Android笔记(二)LogCat

LogCat是用来打印日志信息的,主要有5个方法 Log.v() Log.d() Log.i() Log.w() Log.e() v是verbose打印全部信息 d是debug打印调试信息 i是info打印一些比较重要的数据 w是warn打印警告信息 e是error打印错误信息 LogCat可以通过选择来打印不同级别的日志信息,你可以根据自己的需求来查看。只能打印比自己级别高的信息。比

Tomi_En的专栏 954

如何使用Logcat进行Android UI性能分析:从入门到精通的完整指南

在Android应用开发中,UI性能直接影响用户体验和应用评价。awesome-android-ui作为一个精选的Android UI/UX库集合,不仅提供了丰富的界面组件,还包含了许多性能优化的最佳实践。本文将详细介绍如何利用Logcat工具对Android UI性能进行专业分析,帮助开发者快速定位和解决界面卡顿、响应缓慢等问题。 ## 为什么Logcat是UI性能分析的利器 🚀 Logc

gitblog_01000的博客 378
上一篇: Java中final关键字用法总结
下一篇: 8大你不得不知的Android调试工具
johnson67
博客等级 码龄17年 28粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值