android系列(三)android logcat
一. logcat是Android中一个命令行工具,可以用于得到程序的log信息。
开发过程中如何输出想要的信息到log?
Log 类是一个日志类,您可以在代码中使用 logcat 打印出消息。
常见的日志记录方法包括:
v(String, String) (verbose) 显示全部信息
d(String, String) (debug) 显示调试信
i(String, String) (information) 显示一般信息
w(String, String) (warning) 显示警告信息
e(String, String) (error) 显示错误信息
log的例子:
Log.i("MyActivity", "MyClass.getView() — get item number " + position);
logcat 命令获取log:adb logcat
logcat 将输出类似如下信息:
I/MyActivity( 1557): MyClass.getView() — get item number 1
实际例子
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
public class MainActivity extends AppCompatActivity {
//添加一个tag,方便知道是哪个查log
public static java.lang.String TAG="MyApp";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//TAG 标记
Log.v(TAG, "LOGV,我是黑色的****************************");
Log.d(TAG,"LOGD,我是蓝色的****************************");
Log.i(TAG,"LOGI,我是绿色的****************************");
Log.w(TAG,"LOGW,我是橙色的****************************");
Log.e(TAG,"LOGE,我是红色的****************************");
}
}
二 . logcat 缓冲区— 缓冲区介绍
Android的Log 输出量巨大,特别是通信系统的Log,因此,Android把Log输出到不同的缓冲区中。目前定义了4个Log缓冲区:
Radio:输出通信系统的Log
System:输出系统组件的log
Event:输出event模块的log
Main:所有java层的log,以及不属于上面3层的Log
缓冲区主要给系统组件使用,一般的应用无需关心,应用LOG都输出到main缓冲区中。
三。logcat的命令
1.查看缓冲区的log命令:-b 后面跟缓存区名
adb logcat -b main -b system -b radio -b event
2. 清除缓冲区中的全部日志并退出(清除完后可以使用-g 查看缓冲区)
adb logcat -c
3.将缓冲区的log转存到屏幕中,然后退出
adb logcat -d
4.将log输出到指定的文件中 <文件名>. 默认为标准输出(stdout)
-f <filename>
常常和-c和-r 搭配使用
------------------------------------------------------------------------------------------
logcat要adb shell之后再设备中运行,不然会报错:
C:\Users\kanglimin>adb logcat -f E:\logcat\a.txt -n 2 -r 1
couldn't open output file: Read-only file system
---------------------------------------------------------------------------------------------
logcat -f /data/local/tmp/log.txt -n 10 -r 1
-rw------- root root 258 2016-07-13 15:47 log.txt
-rw------- root root 1056 2016-07-13 15:47 log.txt.1
-rw------- root root 1066 2016-07-13 15:47 log.txt.10
-rw------- root root 1056 2016-07-13 15:47 log.txt.2
-rw------- root root 1058 2016-07-13 15:47 log.txt.3
-rw------- root root 1056 2016-07-13 15:47 log.txt.4
-rw------- root root 1066 2016-07-13 15:47 log.txt.5
-rw------- root root 1056 2016-07-13 15:47 log.txt.6
-rw------- root root 1054 2016-07-13 15:47 log.txt.7
-rw------- root root 1054 2016-07-13 15:47 log.txt.8
-rw------- root root 1056 2016-07-13 15:47 log.txt.9
5.打印日志缓冲区的大小并退出
C:\Users\kanglimin>adb logcat -g
/dev/log/main: ring buffer is 256Kb (255Kb consumed), max entry is 5120b, max pa
yload is 4076b
/dev/log/system: ring buffer is 256Kb (95Kb consumed), max entry is 5120b, max p
ayload is 4076b
6.设置日志的最大数目<count> ., 默认值是4,需要和 -r 选项一起使用。
-n <count> 文件个数
7.每<kbytes> 时输出日志,默认值为16,需要和-f 选项一起使用
-r <kbytes> 单位是KB
8.设置过滤器
-s
9.设置输出格式的日志消息。默认是短暂的格式。支持的格式列表
-v <format>
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
三。 log的优先级
优先级使用字符标识,以下优先级从低到高
V — Verbose (最低优先级)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S— Silent
方便查找用户查看和自己相关的log
减少日志的输出可以建立一个过滤器:
过滤语法:tag:priority
adb logcat ActivityManager:I MyApp:D *:S
过滤TAG为ActivityManager输出级别大于I的日志与TAG为MyApp输出级别大于D的日志
adb logcat *:W 设置过滤级别为W以上
常用的设置为环境变量:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
Log.i("MyActivity", "MyClass.getView() — get item number " + position);
logcat命令获取log:adb logcat
logcat将输出类似如下信息:
I/MyActivity( 1557): MyClass.getView() — get item number 1
相关推荐
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。以上实例中 7、5 和 12 是操作数。关系运算符用于计算结果是否为 true 或者 false。逻辑运算符用于测定变量或值之间的逻辑。