导航:首页 > 净水问答 > eclipse过滤打日志

eclipse过滤打日志

发布时间:2023-11-13 20:53:09

⑴ catlog日志工具怎么使用

首先讨论一下为什么使用Logcat而不使用Java中的System.out.println()方法来输出日志。
System.out.println()方法的优点就是使用很方便,只需要在Eclipse中输入syso,接着按下代码提示,这个方法就自动出来了。但是相比较Logcat,它的缺点也很明显,比如打印时间无法确定、打印内容无法控制、不能添加过滤器、日志级别没有区分等等。

今天重点讨论下log的级别区分,Android中的日志工具类Logcat(android.util.Log)提供了5种方法(对应5种级别),当然如有需要也可以进行重载,这里暂时不谈。先看这五种方法:
1.Log.v()
对应级别verbos,属于Android日志里面级别最低的一种。从名字可以看出,这中方法用于打印哪些琐碎的的、意义最小的日志信息(显然数量较多)。
2.Log.d()
对应级别debug,比verbose高一级。这种方法用于打印调试的相关信息,对调试程序和分析问题用很大帮助。
3.Log.i()
对应级别info,又比debug高一级。该方法用于打印一些比较重要的信息,这些信息有助于帮助分析用户行为。
4.Log.w()
对应级别warn,比info高一级。这个方法用于打印一些警告信息,提示程序在某些部分可能存在潜在的风险,例如程序流会堵死之类。最好将这些部分修复一下。
5.Log.e()
对应级别error,是级别最高的日志信息。这个方法用于打印程序中的错误信息,例如程序进入了catch语句当中(异常处理机制)。当出现E级别的日志信息的时候表示程序出现了很严重的错误,需要尽快修复。

细想一下,Log和Logcat配合之下会有怎样的效果,今天先说下给Logcat添加过滤器的方法。
正常刚打开Eclipse会有一个All message过滤器(其实就是没过滤),他会把所有的五种日志全部打印出来。另外当我们创建项目的时候,会产生一个com.xxx.xxx的过滤器,这是运行项目时自动创建的,点击这个过滤器就能看到这个项目的日志信息。这里我们尝试添加一个自定义的过滤器。


当前我们选择的级别是verbose,是前面讲过的五种级别中最低的等级,也就是说无论我们用Log.v()、Log.d()、Log.i()、Log.w()、log.e()当中的哪一种方法,这条日志都会被打印出来。以此类推,如果我们选择的控制级别是debug的话,那么使用Log.v是无法打印出这条语句的,只有用debug及以上的方法才可以。换个角度说,如果我们将当前的等级控制选择在info、warn或者error,那么上面的语句也不会打印出来,因为代码中我们使用的打印方法是Log.d()。通过日志控制可以很快的定位到我们需要的信息,有效地提高解决问题的效率,确实比System.out.println()好用多了。

⑵ 怎么用eclipse还有logcat命令的过滤log信息

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 脚本如下,参数是程序的 java 包名(如 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 官方文档 Reading and Writing Logs。如果喜欢使用图形界面,请参考 Using DDMS,DDMS 里面的 logcat 也可以同样过滤。

⑶ eclipse里的LogCat,tag标签全是unknown

可以使用logcat过虑器来过虑不需要的日志。
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 脚本如下,参数是程序的 java 包名(如 com.android.media)。
查看源代码打印帮助
1 #!/bin/bash
2 packageName=$1
3 pid=`adb shell ps | grep $packageName | awk '{print $2}'`
4 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 官方文档 Reading and Writing Logs。如果喜欢使用图形界面,请参考 Using DDMS,DDMS 里面的 logcat 也可以同样过滤。

⑷ 怎么用eclipse还有logcat命令的过滤log信息

在Eclipse中安装ADT和android sdk包之后,运行以开发的android程序时,在LogCat窗口中会显示出一系列的信息,这些信息是每一个程序通过Dalvik虚拟机所传出的实时信息,可以方便我们对程序的了解。
在log窗口中,每条信息都包含五个部分,Time,标题空白,pid,tag和Message。
1、Time
表示执行的时间,这个信息对于学习生命周期,分析程序运行的先后顺序特别有用。
2、标题空白的列
表示的是信息的种类,分为V,D,I,W,E五种。
V:verbose,显示全部信息
D:Debug,显示调试信息
I:Info,显示一般信息
W:Warming,显示警告信息
E:Error,显示错误信息
可以通过点击LogCat上面的用圆圈括起来的V,D,I,W,E来改变显示的范围。比如选择了W,那就只有警告信息和错误信息可以显示出来了。
3、pid
表示程序运行时的进程号
4、tag
标签,通常表示系统中的一些进程名,比如我们运行helloworld程序的话,就会看到activitymanager在运行。
5、Message
表示进程运行时的一些具体信息,比如我们运行helloworld程序的话,就会看到starting activity...helloWorld的字样
可以输出LogCat的信息到文本文件中,以方便分析。在下拉框中选择输出选择的信息就可以了。
下面是输出到文件中的启动helloWorld程序时的一条信息的例子,分别用5个下划线标出了上面介绍的内容:
05-20 15:46:10.129: INFO/ActivityManager(60): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.android.helloworld/.HelloWorld }
6、Filter的使用
可以在Filter中输入筛选信息,使LogCat中只现实我们需要分析的信息。比如我们只想看和HelloWorld相关的信息,就可以在Filter中输入HelloWorld,这样只有Message中包含HelloWorld的内容才会显示出来。
7、LogCat中信息不能显示
上面说了这么多关于logCat的使用,可能LogCat中根本就什么信息都没有显示!没关系,只要在Eclipse中选择window->show view->other->android->devices就可以了。
8、在LogCat中输出程序的运行信息
a、在程序中导入相应的包
import android.util.Log;
b、在需要输出信息的函数中增加相关的调试代码
Log.i("hi world","oncreate");
方法i是Log类的静态方法,可以直接使用,我们看着各类的定义可以看到,它提供了多种输出方法,分别对应我们上面提到的V,D,I,W,E。用哪个方法就决定了输出的类型,这里用i,表示输出的是information。
这个方法中的第一个参数就是要显示在Tag那一栏的内容,把这条语句加到OnCreate方法中,执行时LogCat中就会显示如下的信息。
05-22 21:58:22.894 I 3910 hi world onCreate
9、创建新的Filter
有时候只想看我们程序中用Log类的相关方法输出的各种信息,这时就可以考虑新建一个过滤器。点击LogCat的右上角的“+”号,可以创建一个新的过滤器。比如我们在by Log Tag的选项中填入上面程序输出的"hi world"这个tag。这样再运行时在我们新创建的Filter中就只显示hi world这个tag标记出来的信息了。

阅读全文

与eclipse过滤打日志相关的资料

热点内容
酒精蒸馏应注意什么 浏览:245
邯郸南污水处理厂技术 浏览:777
鸡蛋皮怎么洗暖瓶水垢 浏览:350
喜客odea咖啡机除垢 浏览:393
新马3空调滤芯怎么安装 浏览:794
超滤膜乙腈 浏览:833
净水机没有回水怎么办 浏览:135
如何降低反渗透膜清洗成本 浏览:692
污水井内支架用什么处理方式 浏览:506
饮水机温控器控制什么 浏览:428
反渗透膜杀菌 浏览:23
补茶几的是什么树脂 浏览:815
工业纯水设备价格多少 浏览:755
沁园牌管道式超滤净水器装法 浏览:528
滤芯安装在什么位置 浏览:549
上海10寸过滤芯多少钱一个 浏览:714
酸洗磷化污水处理设备哪里卖 浏览:851
盼盼树脂门隔音好吗 浏览:203
纳滤反冲洗频率 浏览:437
高透明环氧树脂里放动物 浏览:709