android java logcat,使用adb logcat命令显示Android设备上的Log日志

使用adb logcat命令显示Android设备上的Log日志

有时候咱们在手机程序上的日志要在其余地方调试,而后要看里面的Log日志。css

本文教你们如何在不须要studio就能够查看手机程序中的Log日志。java

实现这个功能的前提是使用adb命令,因此必需要有手机和电脑,还有安装adb,adb程序是很小的几M就能够。android

一.在cmd窗口查看手机的Log日志

在肯定连上手机后(adb device,能够看到电脑链接的手机)git

在cmd窗口中输入以下命令,就能够像Studio中的Logcat窗口中显示日志信息:github

//格式1:打印默认日志数据

adb logcat

//格式2:须要打印日志详细时间的简单数据

adb logcat -v time

//格式3:须要打印级别为Error的信息

adb logcat *:E

//格式4:须要打印时间和级别是Error的信息

adb logcat -v time *:E

//格式5:将日志保存到电脑固定的位置,好比D:\log.txt

adb logcat -v time >D:\log.txt

这时手机日志更新什么日志,cmd窗口也会同步更新数据。web

可是这样没有过滤条件,若是Log日志不少,很难找到咱们想要的信息,缓存

固然也能够复制cmd中的数据到一个文本中慢慢处理的,就是效率不高。ruby

下面介绍adb logcat中的详细参数命令以及如何才能高效的打印日志,或者把日志保存到咱们指定的位置。app

二.adb logcat 详解

adb logcat若是用过,可是具体命令又不记得ide

能够输入adb logcat -help,查看一下一些简单的数据格式:

a98328b87f4c48d3b44670f231eaa59a.gif

可是,没用过adb logcat,对于上面的指令也是不知因此然的。能够先看看后面的介绍。

1.adn logcat日志格式

adb logcat [] ... [] ...

adb logcat [选项...] [过滤项...],

前面那些-s,-v就是选项,后面那些V、D、I、W、E、F、S是级别过滤项,同一个tag只能有一个过滤项,多个tag能够有多个过滤项。

先介绍过滤项,这个比较简单,后面在介绍选项

2.按级别过滤日志

格式:

adb logcat [:priority]

tag表示标签,priority输出的级别

日志默认级别是V,若是错误日志咱们选择E就能够。

Android 的日志分为以下几个优先级(priority):

V —— Verbose(最低,输出得最多)

D —— Debug

I —— Info

W —— Warning

E —— Error

F —— Fatal

S —— Silent(最高,啥也不输出)

按某级别过滤日志则会将该级别及以上的日志输出。

好比,命令:

adb logcat *:W

其实*能够是某个tag,若是没有指明,就表示全部。

会将 Warning、Error、Fatal 和 Silent 日志输出。

(注: 在 macOS 下须要给 :W 这样以 做为 tag 的参数加双引号,如 adb logcat “:W”,否则会报错 no matches found::W。)

3.按 tag 和级别过滤日志

能够由多个 [:priority] 组成。

好比,命令:

adb logcat ActivityManager:I MyApp:D *:S

表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

可是我发现本身使用tag标签命令,并无成功过滤。而且使用tag后,后面的级别也无效了,因此tag使用*号比较保险。

4.adb logcat选项解析

--"-s"选项 : 设置输出日志*:s的标签, 只显示该标签的日志;--"-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;--"-r"选项 : 按照每千字节输出日志, 须要 -f 参数, 不过这个命令没有执行成功;--"-n"选项 : 设置日志输出的最大数目, 须要 -r 参数, 这个执行 感受 跟 adb logcat 效果同样;--"-v"选项 : 设置日志的输出格式, 注意只能设置一项;--"-c"选项 : 清空全部的日志缓存信息;--"-d"选项 : 将缓存的日志输出到屏幕上, 而且不会阻塞;--"-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞;--"-g"选项 : 查看日志缓冲区信息;--"-B"选项 : 以二进制形式输出日志;

上面不少选项基本是没啥做用的,好比-s至关于过滤*:s的日志,因此是没有日志输出的

这里介绍下用得比较多的选项-v、-c:

(1)adb logcat -v

-v是设置日志的输出格式的

日志支持按如下几种格式 :

①brief

默认格式。格式为:

/():

示例:

D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0

②process

格式为:

()

示例:

D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)

③tag

格式为:

/:

示例:

D/HeadsetStateMachine: Disconnected process message: 10, size: 0

④raw

格式为:

示例:

Disconnected process message: 10, size: 0

⑤time

格式为:

/():

示例:

08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0

⑥threadtime

格式为:

:

示例:

08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0

⑦long

格式为:

[ :/ ]

示例:

[ 08-28 22:39:39.974 1785: 1832 D/HeadsetStateMachine ] Disconnected process message: 10, size: 0

⑨指定格式可与上面的过滤同时使用。好比:

adb logcat -v long ActivityManager:I *:S

对于-v选项:

若是须要的是普通日志那么使用-v time就能够了,

若是须要查看线程区别使用 -v threadtime就能够了,其余日志基本也是少用的。

(2)adb logcat -c

adb logcat -c是用来清除缓存信息的,这个没有参数

三.把日志信息保存到电脑中

adb logcat最后添加” > 保存文件的地址 “

好比须要将的信息保存到电脑中使用下面的命令:

adb logcat -v time > D:\log.txt

你就能够在D盘中看到一个log.txt文件,而且里面有以前的日志信息

若是没有指定具体的位置的命令

adb logcat -v time > log.txt

这个文件是保存在C盘的用户名的文件夹下的。

四。使用adb logcat总结

经常使用的其实就两三个命令

1.adb logcat -v time

2.adb logcat -v time > D:\log.txt

3.adb logcat -c

直接显示日志信息,是会显示不少日志信息的,好像是从设备最近一次开机的日志开始显示

最好的作法的先使用-c清除以前的日志信息,再触发事件,查看最近的日志信息

下面是个人一个示例:

在MainActivity的生命周期中写几个方法打印Log,清除日志后,运行程序,查看日志文本。

1.Android代码:

package com.example.wenzhi.adblog;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

public class MainActivity extends AppCompatActivity {

private String TAG = "adb MainActivity";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Log.e(TAG, "onCreate");

}

@Override

protected void onStart() {

super.onStart();

Log.e(TAG, "onStart");

}

@Override

protected void onPause() {

super.onPause();

new Thread(new Runnable() {

@Override

public void run() {

Log.e(TAG,"onPause on over thread");

}

}).start();

}

@Override

protected void onDestroy() {

super.onDestroy();

Log.e(TAG, "onDestroy");

}

}

2.adb命令和过程,结果

a98328b87f4c48d3b44670f231eaa59a.gif

3.若是把日志直接显示在cmd窗口中

a98328b87f4c48d3b44670f231eaa59a.gif

日志窗口是会不断增长的。。。

到这里adb logcat的使用就已经详细介绍完毕了。

共勉 :多作有意义的是事情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值