android 怎么使用应用的包名通过logcat过滤命令来过滤某个应用的日志

怎么用eclipse还有logcat命令的过滤log信息_百度知道
怎么用eclipse还有logcat命令的过滤log信息
无论什么样的程序开发过程中,出现错误都是不可避免的,一般情况下,语法错误会被开发环境检测到,并能及时的提示我们错误的位置以及修改的方法,但是逻辑错误就不是那么容易被发现了,通常逻辑错误的定位和分析是一件非常困难的事情。所以在学习Android过程中,继学习它的程序结构,写了HelloWorld和一些简单的界面布局程序之后,我选择研究一下它的调试工具。LogCat就是其中一个。LogCat是用来获取系统日志信息的工具,它可以捕获的信息包括Dalvik虚拟机产生的信息,进程信息,ActivityManager信息,PackagerManager信息,Android运行时信息和应用程序信息等等。我们可以在打开Eclipse之后,选择Window&–&&Show&View&-&Other菜单,然后在Android-&LogCat中选择LogCat,这样LogCat便会在Eclipse的下方区域出现了。
其中,在LogCat的右上方的5个字母分别表示了5种不同类型的日志信息(并以不同颜色加以区分,级别越高,颜色越突出):1.&[V]:详细(Verbose)信息,输出颜色为黑色2.&[D]:调试(Debug)信息,输出颜色是蓝色3.&[I]:通告(Info)信息,输出颜色为绿色4.&[W]:警告(Warn)信息,输出颜色为橙色5.&[E]:错误(Error)信息,输出颜色为红色,这里错误信息的级别最高,其次是警告信息,然后是通知信息和调试信息,级别最低的是详细信息。6.[assert],新版本加入的。在LogCat中,我们可以通告这5个字母图标选择要显示的信息类型,级别高于所选类型的信息也会在LogCat中显示,但级别低于所选类型的信息则不会被显示。在Android程序调试过程中,首先要引入android.util.Log包,然后使用用来记录详细信息的Log.v()、用来记录调试信息的Log.d()、用来记录通告信息的Log.i()、用来记录警告信息的Log.w()、用来记录错误信息的Log.e()这样五个函数在程序中设置“日志点”。这些函数的第一个参数是日志标签TAG(就是在你要测试的位置需要一个常量用来标记,标记的名字就是所谓的日志标签),第二个参数是实际的信息内容。每当程序运行到我们设置的“日志点”时,应用程序的日志信息便被发送到LogCat中,我们就可以根据“日志点”显示的信息与预期我们在函数中设置的信息内容是否一致来判断程序是否存在错误,这样就能根据“日志点”来迅速找到错误的“出事地点”了。在下面的程序中,演示了Log类的具体使用方法:package&wt.relativeL&import&android.app.Aimport&android.os.Bimport&android.util.Limport&android.widget.Bimport&android.widget.EditTimport&android.widget.TextVimport&android.util.L&public&class&RelativeLayout&extends&Activity&{final&static&String&TAG&=&&LOGCAT&;private&TextView&tv&=&private&EditText&et&=&private&Button&btn1&=&private&Button&btn2&=&&&&&@Override&&&&public&void&onCreate(Bundle&savedInstanceState)&{&&&&&&&&super.onCreate(savedInstanceState);&&&&&&&&setContentView(R.layout.main);&&&&&&&&tv&=&(TextView)findViewById(R.id.label);&&&&&&&&et&=&(EditText)findViewById(R.id.entry);&&&&&&&&btn1&=&(Button)findViewById(R.id.cancel);&&&&&&&&btn2&=&(Button)findViewById(R.id.ok);&&&&&&&&tv.setText(R.string.name);&&&&&&&&btn1.setText(R.string.button1);&&&&&&&&btn2.setText(R.string.button2);&&&&&&&&&Log.v(TAG,&&This&is&Verbose&);&&&&&&&&Log.d(TAG,&&This&is&Debug&);&&&&&&&&Log.i(TAG,&&This&is&Info&);&&&&&&&&Log.w(TAG,&&This&is&Warn&);&&&&&&&&Log.e(TAG,&&This&is&Error&);&&&&}}程序运行后,LogCat捕获得到应用程序发送的日志信息,显示结果如下图:通过结果我们发现,即使我们事先选择了某个特定的日志信息的级别,产生的日志信息还是有很多,需要我们逐条去阅读,给我们带来很大的麻烦。这时我们就要用到一个LogCat提供的“过滤”功能了,在右上角的“+”号和“-”号,分别是添加和删除过滤器。我们可以根据日志信息的标签(Tag)、产生日志的进程编号(Pid)或者信息等级(Level),对显示的日志内容进行过滤。在实际使用中,我们最好为每一个类声明一个字符串常量TAG,这样在Logcat中我们可以容易区分不同的类的日志了。下面使用在LogCat右上角的“+”号,添加一个名为LogcatFilter的过滤器,并设置过滤条件为“标签=LOGCAT”,下图为过滤器的具体设置方法:过滤器设置好后,LogcatFilter过滤后的日志信息如下图,这样,无论什么类型的日志信息,属于哪个进程,只要标签为LOGCAT,都将显示在LogcatFilter内。
其他类似问题
为您推荐:
logcat的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Android命令行工具logcat详细用法 - Android&&&&>>&& Android命令行工具logcat详细用法!
转于:/article-272-1.html
-----------------------------------------------------------------------
摘要: Android日志系统有循环缓冲区,并不是所有的日志系统都有默认循环缓冲区。为了得到 日志信息,你需要通过-b 选项来启动logcat 。如果要使用循环缓冲区,你需要查看剩余的 循环缓冲期: ...
【技术交流】android的logcat详细用法!
logcat是Android中一个命令行工具,可以用于得到程序的log信息。 见板凳详细说明!
本贴内容来自网络,引用网址为:/%C9%C1%D2%AB%B5%C4%CB%AE%BD%A7/blog/item/7cc9e1d0271d.html。
【造成的版权问题,LZ概不负责任!转载请注明出处】,此贴为技术交流帖,若有疑问请跟贴回复!谢谢!
Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命令来查看和使用.
一、使用logcat命令的目的:
1、你可以用 logcat 命令来查看系统日志缓冲区的内容:
[adb] logcat [&option&] ... [&filter-spec&] ...
详细内容,请查看Listing of logcat Command Options ,它对logcat命令有详细的描述 .
2、你也可以在你的电脑或运行在模拟器/设备上的远程adb shell端来使用logcat命令,也可以在你的电脑上查看日志输出。
$ adb logcat
你也这样使用:
二、“过滤”日志输出:
每一个输出的Android日志信息都有一个标签和它的优先级.
日志的标签是系统部件原始信息的一个简要的标志。(比如:“View”就 是查看系统的标签).
优先级有下列集中,是按照从低到高顺利排列的:
V — Verbose (lowest priority)
D — Debug
W — Warning
E — Error
F — Fatal
S — Silent (highest priority, on which nothing is ever printed)
在运行logcat的时候在前两列的信息中你就可以看到 logcat 的标签列表和优先级别,它是这样标出的:&priority&/&tag& .
下面是一个logcat输出的例子,它的优先级就似乎I,标签 就是ActivityManage:
I/ActivityManager(
585): Starting activity: Intent { action=android.intent.action...}
为了让日志输出能体现管理的级别,你还可以用过滤器来控制日志输出,过滤器可以帮助你描述 系统的标签等级.
过滤器语句按照下面的格式描述:
tag:priority ... , tag 表示是标签,
priority 是表示标签的报告的最低等级.
从上面的tag的中可以得到日志的优先级.
你可以在过滤器中多次写tag:priority .
这些说明都只到空白结束。
下面有一个列子,
例子表示支持所有的日志信息,除了那些标签 为”ActivityManager”和优先级为”Info”以上的和标签为” MyApp”和优先级为” Debug”以上的。 小等级,优先权报告为tag.
adb logcat ActivityManager:I MyApp:d *:S
上面表达式的最后的元素 *:S ,,是设置所有的标 签为”silent”,所有日志只显示有”View” and “MyApp”的,用 *:S 的另一个用处是 能够确保日志输出的时候是按照过滤器的说明限制的,也让过滤器也作为一项输出到日志中.
下面的过滤语句指显示优先级为warning或更高的日志信息:
adb logcat *:W
如果你电脑上运行logcat ,相比在远程adbshell端,你还可以为环境变量ANDROID_LOG_TAGS :输入一个参数来设置默认的过滤
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:d *:S"
需要注意的是ANDROID_LOG_TAGS 过滤器如果 通过远程shell运行logcat 或 用adb shell logcat 来运行模拟器/设备不能输出日志.
二、“控制”日志输出格式:
日志信息包括了许多元数据域包括标签和优先级。可以修改日志的输出格式,所以可以显示出特 定的元数据域。可以通过 -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.
当启动了logcat ,你可以通过-v 选 项来指定输出格式:
[adb] logcat [-v &format&]
下面是用 thread 来产生的日志格式:
adb logcat -v thread
需要注意的是你只能-v 选项来规定输出格式 option.
三、“查看”可用日志缓冲区:
Android日志系统有循环缓冲区,并不是所有的日志系统都有默认循环缓冲区。为了得到 日志信息,你需要通过-b 选项来启动logcat 。如果要使用循环缓冲区,你需要查看剩余的 循环缓冲期:
radio — 查看缓冲区的相关的信息.
events — 查看和事件相关的的缓冲区.
main — 查看主要的日志缓冲区
-b 选项使用方法:
[adb] logcat [-b &buffer&]
下面的例子表示怎么查看日志缓冲区包含radio 和 telephony信息:
adb logcat -b radio
四、查看 stdout 和stderr
在默认状态下,Android系统有stdout 和 stderr (System.out和System.err ) 输出到/dev/null , 在运行Dalvik VM的进程中,有一个系统可以备份日志文件。在这种情况下,系统会用stdout 和stderr 和 优先级 I.来记录日志信息
通过这种方法指定输出的路径,停止运行的模拟器/设备,然后通过用setprop 命 令远程输入日志
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
系统直到你关闭模拟器/设备前设置会一直保留,可以通过添加/data/local.prop 可 以使用模拟器/设备上的默认设置
五、Logcat命令列表:
Description
-b&buffer&
加载一个可使用的日志缓冲区供查看,比如event 和radio . 默认值是main 。具体查看Viewing Alternative Log Buffers.
清楚屏幕上的日志.
输出日志到屏幕上.
-f&filename&
指定输出日志信息的&filename& , 默认是stdout .
输出指定的日志缓冲区,输出后退出.
-n &count&
设置日志的最大数目&count& ., 默认值是4,需要和 -r 选 项一起使用。
-r &kbytes&
每&kbytes& 时 输出日志,默认值为16,需要和-f 选 项一起使用.
设置默认的过滤级别为silent.
-v &format&
设置日志输入格式,默认的是brief 格 式,要知道更多的支持的格式,参看Controlling Log Output Format.
备注:其实MIUI系统,在现有的基础上,软件已追加LOG抓取的新功能,不知道太家是否有关注,请参考下面的帖子,进一步了解LOG抓取的方法:
HTC DHD A9191 教程——DHD MIUI系统 LOG抓取方法!
另外在新版本ROM中。MIUI也很人性化的追加 “用户反馈”功能,针对LOG问题可以通过该软件进行抓取!
以上android的logcat详细用法!仅供参考!若有疑问请跟帖回复,谢谢!
MIUI有你、有我、更精彩!!!trackbacks-0
1 elcipse 中往往会在logcat中显示 all message ,而这里面的信息太多,根本没有办法进行区分。如图:
2 我们想显示自己项目的 logcat 。下面开始设置。
3 首先点击上面的绿色 加号箭头。
4 然后输入如下:JJ.example.jsq 为自己项目的包名称,包名称可以通过AndroidManifest.xml 中获取到 如图红色框框
5 设置完毕。这时就可以看见logcat中自己项目的信息了。
阅读(...) 评论()android studio LogCat怎么过滤出有用的信息
[问题点数:20分,结帖人shuofxz]
android studio LogCat怎么过滤出有用的信息
[问题点数:20分,结帖人shuofxz]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。2199人阅读
Java/Android(204)
1. Log信息级别
Log.v - VERBOSE &: 黑色
Log.d - DEBUG &: 蓝色
Log.i- INFO & : 绿色
Log.w- WARN & : 橙色
Log.e- ERROR & : 红色
从上而下级别逐次增加
2. 过滤:指定标签,指定级别
adb logcat [TAG:LEVEL ]&[TAG:LEVEL ] ...
标签TAG: 在进行log输出时需要指定标签
Log.v(&Test&, info );
可以选择:[V D I W E S]中其中一个
TAG:X 的作用为:&输出标签为TAG的log级别大于X的信息. 例如:
adb logcat Test:I
输出 Test的I 和I 级别以上的log,包括 i, w, e
(1)可以指定多个[TAG:LEVEL ]
(2) level : S 表示为不输出该标签的日志,应为没有大于S级别的日志了
(3)&[TAG:LEVEL ] 不会影响其他标签的日志, 所以如果要屏蔽其他log请使用 *:S
adb logcat Test:I *:S
3. 采用grep正则表达式过滤
grep&正则表达式参见grep与正则表达式
adb logcat | grep -E '^[VDE]/(TAG1|TAG2)'
4. 在同时输出到屏幕和文件 tee
想要把日志保存到文件,如果采用IO重定向,就无法输出到屏幕, 针对这个问题可以采用 tee命令
adb logcat | grep -E '^[VDE]/(TAG1|TAG2)' | tee my.log
几种在shell命令行中过滤adb logcat输出的方法
我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率。本文就具体介绍几种在shell命令行中过滤&输出的方法。
&&&&&&&1、只显示需要的输出(白名单)
&&&&&& 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp:
&&&&&& adb logcat | grep MyApp
&&&&&& adb logcat | grep -i myapp #忽略大小写。
&&&&&& adb logcat | grep --color=auto -i& myapp #设置匹配字符串颜色。更多设置请查看 grep 帮助。
&&&&&& 进阶一点可以使用 grep 的正则表达式匹配。例如上一个例子会匹配一行中任意位置的 MyApp,可以设置为仅匹配 tag。默认的 log 输出如下,如果修改过输出格式相应的表达式也要修改。
&&&&&&&I/CacheService(& 665): Preparing DiskCache for all thumbnails.
&&&&&& 可以看出 tag 是一行开头的第三个字符开始,根据这点写出表达式:
&&&&&& adb logcat | grep &^..MyApp&
&&&&&& 根据这个格式也可以设置只显示某个优先级的 log,再匹配行首第一个字符即可。例如仅显示 Error 级别 tag 为 MyApp 的输出:
&&&&&& adb logcat | grep &^E.MyApp&
&&&&&& 当然也可以匹配多个,使用 | 分割多个匹配表达式,要加转义符。例如要匹配 tag 为 MyApp 和 MyActivity 的输出:
&&&&&& adb logcat | grep &^..MyApp\|^..MyActivity&
&&&&&& adb logcat | grep -E &^..MyApp|^..MyActivity&& #使用 egrep 无须转义符
&&&&&&&2、过滤不需要的输出(黑名单)
&&&&&& 还是使用 grep,用法也跟上面的一样,加一个 -v 即可。例如要过滤 tag 为 MyApp 和 MyActivity 的输出:
&&&&&& adb logcat | grep -v &^..MyApp\|^..MyActivity&
&&&&&& adb logcat | grep -vE &^..MyApp|^..MyActivity&& #使用 egrep 无须转义符
&&&&&&&3、显示同一个进程的所有输出
&&&&&& 有时一个程序里面的 tag 有多个,需要输出该程序(同一个 PID)的所有 tag;仅使用 tag 过滤有时也会漏掉一些错误信息,而一般错误信息也是和程序同一个 PID。还是通过 grep 实现,思路是先根据包名找到 pid 号,然后匹配 pid。写成 shell 脚本如下,参数是程序的&&包名(如
com.android.media)。
&&&&&& #!/bin/bash
&&&&&& packageName=$1
&&&&&& pid=`adb shell ps | grep $packageName | awk ‘{print $2}’`
&&&&&& adb logcat | grep –color=auto $pid
&&&&&&&4、从当前开始显示
&&&&&&&logcat 有缓存,如果仅需要查看当前开始的 log,需要清空之前的。
&&&&&& adb logcat -c && adb logcat
&&&&&&&5、过滤 log 文件
&&&&&& 有时需要分析 log 文件,过滤 log 文件还是使用 grep。例如 log 文件为 myapp.log,要匹配 tag 为 MyApp 和 MyActivity 的输出,然后输出到 newmyapp.log:
&&&&&& cat myapp.log | grep &^..MyApp\|^..MyActivity& & newmyapp.log
&&&&&& Windows 下推荐使用Notepad++,一个免费强大的记事本,支持正则表达式查找替换。可以高亮显示匹配内容,也可以删除不需要的内容。
&&&&&& 以上的技巧主要用到了 grep,其实 logcat 本身也有过滤功能,可以根据 tag、优先级过滤 log,具体请参考 Android 官方文档。如果喜欢使用图形界面,请参考,&里面的
logcat 也可以同样过滤。
adb logcat命令查看并过滤android输出log
cmd命令行中使用adb logcat命令查看android系统和应用的log,dos窗口按ctrl+c中断输出log记录。
logcat日志中的优先级/tag标记:
android输出的每一条日志都有一个标记和优先级与其关联。
优先级是下面的字符,顺序是从低到高:
V — 明细 verbose(最低优先级)
D — 调试 debug
I — 信息 info
W — 警告 warn
E — 错误 error
F — 严重错误 fatal
S — 无记载 silent
标记是一个简短的字符串,用于标识原始消息的来源。如下是一个日志输出的消息,优先级是“D”,标记是“PowerManagerService”:
D/PowerManagerService( 305): onSensorChanged: light value: 306.0
使用logcat命令查看android日志输出:
adb logcat & & //显示全部日志
adb logcat & c:\test.log //将日志保存到文件test.log
根据tag标记和级别过滤日志输出:
仅输出标记为“ActivityManager”且优先级大于等于“Info”和标记为“PowerManagerService”并且优先级大于等于“Debug”的日志:
adb logcat ActivityManager:I PowerManagerService:D *:S
注:*:S用于设置所有标记的日志优先级为S,这样可以确保仅输出符合条件的日志。
adb logcat *:W & //显示所有优先级大于等于“warning”的日志
adb logcat -s PowerManagerService & //显示PowerManagerService的日志信息
Logcat命令列表:
-d 将日志显示在控制台后退出
-c 清理已存在的日志
-f &filename& 将日志输出到文件
adb logcat -f /sdcard/test.txt
-v &format&设置日志输入格式控制输出字段,默认的是brief格式
brief — 显示优先级/标记和原始进程的PID (默认格式)
process — 仅显示进程PID
tag — 仅显示优先级/标记
thread — 仅显示进程:线程和优先级/标记
raw — 显示原始的日志信息,没有其他的元数据字段
time — 显示日期,调用时间,优先级/标记,PID
long —显示所有的元数据字段并且用空行分隔消息内容
adb logcat -v thread & //使用 thread 输出格式
注意-v 选项中只能指定一种格式。
-b &buffer&加载一个可使用的日志缓冲区供查看,默认值是main。
radio — 查看包含在无线/电话相关的缓冲区消息
events — 查看事件相关的消息
main — 查看主缓冲区 (默认缓冲区)
adb logcat -b radio & & //查看radio缓冲区
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1578408次
积分:14715
积分:14715
排名:第503名
原创:74篇
转载:864篇
评论:235条
(18)(56)(13)(12)(8)(33)(32)(36)(12)(34)(42)(30)(17)(11)(3)(5)(11)(18)(17)(13)(17)(7)(6)(27)(19)(47)(1)(19)(11)(2)(1)(26)(20)(10)(6)(2)(8)(3)(10)(9)(6)(4)(15)(7)(2)(7)(8)(50)(14)(11)(26)(20)(4)(1)(5)(14)(12)(4)(4)(3)(2)(4)(2)(4)(1)(1)(1)(3)(2)(11)(3)(8)(15)(2)(1)

我要回帖

更多关于 eclipse logcat 过滤 的文章

 

随机推荐