adb笔记2:adb logcat的使用

1. adb logcat简单使用

# 1. 打印默认日志
adb logcat
1-1 adb logcat
# 2. 显示日志详细时间的简单数据
adb logcat -v time
1-3 adb logcat -v time
# 3. 打印级别是Error的信息
adb logcat *.E

Usage: logcat [options] [filterspecs]
 filterspecs 格式: <tag>[:priority]

where <tag> is a log component(组件) tag (or * for all) and priority is:
  V    Verbose (default for <tag>),默认级别,最低输出最多
  D    Debug (default for '*')
  I    Info
  W    Warn
  E    Error
  F    Fatal致命
  S    Silent (suppress all output)静音(抑制所有的输出)

'*' by itself means '*:D' and <tag> by itself means <tag>:V.
If no '*' filterspec or -s on command line, all filter defaults to '*:V'.
eg: '*:S <tag>' prints only <tag>, '<tag>:S' suppresses all <tag> log messages.

If not specified on the command line, filterspec is set from ANDROID_LOG_TAGS.
<tag> 表示标签,用*表示所有,priority输出的级别

1-6 adb logcat *:E
# 4. 将日志保存在PC指定位置,如c:\testing\log.txt
adb logcat -v time *:E >c:\testing\log.txt
1-7 adb logcat -v time *:E >c:\testing\log.txt

没有过滤条件,log较多,很难找到想要的信息

2. 按级别过滤log

adb logcat <tag>[:priority]

3. 按tag和级别过滤日志

可以由多个[:priority]组成
adb logcat PushService:I ActivityManager:W *:S
表示输出PushService的Info以上级别日志,ActivityManager的Warning以上级别日志,及其他tag的Slient级别日志(即屏蔽其他log)

3-1 多个tag

4. adb logcat 选项解析

Usage: logcat [options] [filterspecs]
options include:
  -s              Set default filter to silent. Equivalent to filterspec '*:S'
                   相当于*:S,故无log输出
  -f <file>, --file=<file>               Log to file. Default is stdout标准输出流,-f输出不成功报错:couldn't open output file
  -r <kbytes>, --rotate-kbytes=<kbytes>
                  Rotate log every kbytes. Requires -f option
                  按照千字节输出日志;与-f一起使用,但执行不成功
  -n <count>, --rotate-count=<count>
                  Sets max number of rotated logs to <count>, default 4
                  设置log输出的最大数;执行效果感觉与adb logcat一样
  -v <format>, --format=<format> 设置输出log的格式;已详说
  -c, --clear     Clear (flush) the entire log and exit
                  if Log to File specified, clear fileset instead
                 清空所有的log缓存信息
  -d              Dump the log and then exit (don't block)
                    将缓存日志输出到屏幕上,并且不会阻塞
  -t <count>      Print only the most recent <count> lines (implies -d)
                            输出最近几行log,输出后退出不阻塞
  -t '<time>'     Print most recent lines since specified time (implies -d)
  -g, --buffer-size                      Get the size of the ring buffer.
                                                     查看log缓存区信息
  -B, --binary    Output the log in binary.
                           以二进制形式输出日志
# adb logcat -t <count>
C:\Windows\system32>adb logcat -t 5
--------- beginning of main
04-27 18:19:02.621 28185 28185 D UploadVoiceJobService: needUploadVoice timeSinceLastUpload = 2719490
04-27 18:19:03.518  2103  2145 D CompatibilityInfo: mCompatibilityFlags - 0
04-27 18:19:03.518  2103  2145 D CompatibilityInfo: applicationDensity - 440
04-27 18:19:03.518  2103  2145 D CompatibilityInfo: applicationScale - 1.0
04-27 18:19:06.578 28185 28204 I AnrWatcher: check anr normal9

C:\Windows\system32>
# ------------------------------------------------------------------------------------------------------
# adb logcat -g
C:\Windows\system32>adb logcat -g
main: ring buffer is 2Mb (473Kb consumed), max entry is 5120b, max payload is 4068b
system: ring buffer is 4Mb (34Kb consumed), max entry is 5120b, max payload is 4068b
crash: ring buffer is 1Mb (0b consumed), max entry is 5120b, max payload is 4068b

C:\Windows\system32>
4.1 adb logcat -v <format>
-v <format>, --format=<format> options:
  Sets log print format verb and adverbs(副词), where <format> is:
    brief long process raw tag thread threadtime time
  and individually(单独) flagged modifying adverbs can be added:
    color descriptive epoch monotonic printable uid usec UTC year zone

Single format verbs:
  long       — Display(显示) all metadata(元数据) fields, separate messages with blank lines.
  raw        — Display the raw(原始) log message, with no other metadata fields.
1-2 adb logcat -v <format>
1) brief

默认输出格式:<priority>/<tag>(<pid>):<message>

C:\testing>adb logcat -t 3 -v brief
--------- beginning of main
I/encent.mobileq(26197): The ClassLoaderContext is a special shared library.
D/PatchLogTag(26197): DexPatchInstaller injectDexPatch result=500, inject cost time=9 ms.
W/System  (26177): A resource failed to call close.

C:\testing>
2) long

输出格式:[<datetime> <pid>:<tid> <priority>/<tag>] <换行><message> <空行>

C:\testing>adb logcat -t 3 -v long
--------- beginning of main
[ 04-27 17:49:22.878  2632:11232 I/chatty   ]
uid=1001(radio) Binder:2632_E expire 2 lines

[ 04-27 17:49:22.888  2632:11232 E/PhoneInterfaceManager ]
[PhoneIntfMgr] checkCarrierPrivilegesForPackage: No UICC

[ 04-27 17:49:26.119 26585:26604 D/NetworkStateReceiver ]
sWifiStrengthLevel = 3


C:\testing>
3) process

输出格式:<priority>(<pid>) <message>

C:\testing>adb logcat -t 3 -v process
--------- beginning of main
D( 2103) applicationScale - 1.0  (CompatibilityInfo)
I( 3338) GraphicDumpService onStartJob  (MiuiPerfServiceClient)
I( 3338) GraphicDumpService onStopJob  (MiuiPerfServiceClient)

C:\testing>
4) raw

输出格式:<message>

C:\testing>adb logcat -t 3 -v raw
--------- beginning of main
[PhoneIntfMgr] checkCarrierPrivilegesForPackage: No UICC
[PhoneIntfMgr] checkCarrierPrivilegesForPackage: No UICC
[process] filterRealForegroundProcMap: invoked.  realProcMap: {com.tencent.mobileqq=1619516235572}

C:\testing>
5) tag

输出格式:<priority>/<tag>:<message>

C:\testing>adb logcat -t 3 -v tag
--------- beginning of main
D/UploadVoiceJobService: needUploadVoice timeSinceLastUpload = 554317
--------- beginning of system
E/storaged: getDiskStats failed with result NOT_SUPPORTED and size 0
D/KeyguardUpdateMonitor: handleTimeUpdate

C:\testing>
6) thread

输出格式:<priority>(<pid>:<uid>) <message>

C:\testing>adb logcat -t 3 -v thread
--------- beginning of main
D( 2412: 2412) handleTimeUpdate
D(26197:26262) 848QQDT [supplementReportForSwitchAccount] startTimestamp is 0
D(26302:26435) Kill MSF check result[ senderSize:0,sendInterval:949668,receiveInterval=55922,addCmdCount=9

C:\testing>
7) threadtime

输出格式:<datetime> <pid> <tid> <priority> <tag>:<message>

C:\testing>adb logcat -t 3 -v threadtime
--------- beginning of main
04-27 17:47:19.174  2412  2412 D KeyguardUpdateMonitor: handleBatteryUpdate
04-27 17:47:19.178 26585 26585 D UploadVoiceJobService: needUploadVoice timeSinceLastUpload = 816047
04-27 17:47:28.291 26197 26247 D GuardManager.GuardStateScheduler: [process] filterRealForegroundProcMap: invoked.  realProcMap: {com.tencent.mobileqq=1619516235572}

C:\testing>
8) time

输出格式:<datetime> <priority>/<tag>(<pid>):<message>

C:\testing>adb logcat -t 3 -v time
--------- beginning of main
04-27 17:46:46.782 D/CompatibilityInfo( 2103): applicationDensity - 440
04-27 17:46:46.783 D/CompatibilityInfo( 2103): applicationScale - 1.0
04-27 17:46:52.261 D/GuardManager.GuardStateScheduler(26197): [process] filterRealForegroundProcMap: invoked.  realProcMap: {com.tencent.mobileqq=1619516235572}

C:\testing>

-v time:打印普通日志
-v threadtime:查看线程
其他的使用较少

4.2 adb logcat -c

adb logcat -c用来清除缓存信息
直接显示log,是会显示很多的,好像是从设备最近一次开机开始的
建议:先-c清除,然后再触发事件,查看最近的日志信息

5. 日志脚本

5.1 clearLogCache.bat
adb logcat -c
5.2 getLog.bat
adb wait-for-device
adb devices
adb logcat -v threadtime >logs\"%date:~,4%%date:~5,2%%date:~8,2%_%time:~,2%%time:~3,2%%time:~6,2%_log.txt"
pause
5.3 获取指定包的log
@echo off
echo Please enter your PackageName:
SET /p PackageName = 
echo Your PackageName is %PackageName %
adb logcat | findstr %PackageName % > logs\"%PackageName %_%date:~,4%%date:~5,2%%date:~8,2%_%time:~,2%%time:~3,2%%time:~6,2%_log.txt"
pause

养成adb脚本的编写,对重复性的adb命令操作有很大作用。

参考信息:使用adb logcat命令显示Android设备上的Log日志

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容