自动化-Android logcat使用

【logcat命令介绍】:


logcat是Android中一个命令行工具,可以用于得到程序的log信息。

语法:
[adb] logcat [<option>]…[<filter-spec>]….

pc端执行:
adb logcat

【logcat缓冲区】:

-b <buffer>
Android的Log输出量巨大,因此Android把Log输出到不同的缓冲区。4个
Radio
System
Event
Main
不指定缓冲区默认System和main缓冲区

adb logcat -b radio
abd logcat -b system
adb logcat -b events
asb logcat -b main

举例:
adb devices
adb -s 设备 -b system/events/radio/main
所有缓冲区输出:
adb -s 设备 -b system -b events -b radio -b main

【logcat 命令参数】:

-b
-c:清除缓冲区中的全部日志并退出
-d:将缓冲区log转存到屏幕中然后退出
-f<filename>:将log输出到指定文件中  
举例: 
logcat -f /data/local/tmp/log.txt   
logcat -f /data/local/tmp/log.txt  -n 10 -r 1

-g:打印日志缓冲区的大小并退出
-n<count>:设置日志的最大数目默认是4 需要和-r一起使用
-r<kbytes>:需要和-f一起用,默认为16
-s:设置过滤器
-v<format>:设置输出格式

自动化测试:可以先-c 用例跑完了再用-d 输出到某个文件 这样整个过程再大的数据流也不会影响手机性能

【logcat 格式化输出】: 

日志消息包含一个元数据字段,除了标签和优先级。可以修改输出显示一个特定的元数据字段格式的消息。
为此,使用-v选项来指定一个支持的输出格式,以下为支持的格式:
brief:显示优先级/标记和过程的PID发出的消息(默认格式)
process:只显示PID(进程)
tag:只显示优先级/标记
raw:显示原始的日志消息,没有其他元数据字段
time:调用显示日期、时间、优先级/标签和过程的PID发出消息
threadtime:调用显示日期、时间、优先级、标签以及PID TID线程发出的消息
long:显示所有元数据字段与空白行和单独的消息

当logcat开始,可以指定想要的输出格式使用-v选项:
[adb]logcat[-v<format>]
这里有一个例子,展示了如何生成消息的线程输出格式:
adb logcat -v thread
*请注意,只能指定一个输出格式-v

*时间、进程、线程、过滤级别、标签


【logcat 优先级语法】: 


优先级使用字符标识,以下优先级从低到高:
V:Verbose(最低优先级)什么都输出
D:Debug  调试的信息
I:Info
W:Warning 警告信息
E:Error  
F:Fatal   严重错误
S:Silent  静默不输出

优先级语法:减少日志的输出可以建立一个过滤器 过滤器语法:tag:priority
adb logcat ActivityManager:I MyApp:D*:S
输出 I 以上级别;
D以上级别 ;
*:S设置成静默.

常用设置环境变量:
export ANDROID_LOG_TAGS=”ActivityManager:I MyApp:D*:S



Android SDK下, 如何在程序中输出日志 以及如何查看日志. 闲话少说,直接进入正题 在程序中输出日志, 使用 android.util.Log 类. 该类提供了若干静态方法 Log.v(String tag, String msg); Log.d(String tag, String msg); Log.i(String tag, String msg); Log.w(String tag, String msg); Log.e(String tag, String msg); 分别对应 Verbose, Debug, Info, Warning,Error. tag是一个标识,可以是任意字符串,通常可以使用类名+方法名, 主要是用来在查看日志时提供一个筛选条件. 程序运行后 并不会在 ide的控制台内输出任何信息. 如果要后查看日志 请使用 adb logcat 关于adb的更多信息请查看官方网站. 当执行 adb logcat 后会以tail方式实时显示出所有的日志信息. 这时候我们通常需要对信息进行过滤,来显示我们需要的信息, 这时候我们指定的 tag就派上了用场. adb logcat -s MyAndroid:I 这时将只显示tag为MyAndroid,级别为I或级别高于I(Warning,Error)的日志信息. 示例代码如下: Java代码 1. package com.zijun; 2. 3. import android.app.Activity; 4. import android.content.Context; 5. import android.graphics.Canvas; 6. import android.os.Bundle; 7. import android.util.Log; 8. import android.view.MotionEvent; 9. import android.view.View; 10. 11. public class MyAndroid extends Activity { 12. 13. protected static final String ACTIVITY_TAG="MyAndroid"; 14. 15. @Override 16. protected void onCreate(Bundle icicle) { 17. super.onCreate(icicle); 18. setContentView(new MyView(this)); 19. } 20. public class MyView extends View { 21. public MyView(Context c) { 22. super(c); 23. } 24. @Override 25. protected void onDraw(Canvas canvas) { 26. 27. } 28. @Override 29. public boolean onMotionEvent(MotionEvent event) { 30. Log.i(MyAndroid.ACTIVITY_TAG, "============================="); 31. 32. Log.d(MyAndroid.ACTIVITY_TAG, "Haha , this is a DEBUG of MyAndroid. "); 33. Log.i(MyAndroid.ACTIVITY_TAG, "Haha , this is a INFO of MyAndroid. "); 34. Log.w(MyAndroid.ACTIVITY_TAG, "Haha , this is a WARNING of MyAndroid. "); 35. 36. return true; 37. } 38.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值