http://os.51cto.com/art/200905/126051.htm

用adb直接查看log:    adb logcat

清除之前的log: adb logcat -c

加过滤查看log(查看错误信息,异常就在这里):  adb logcat -s *:E  

将log输出到sdcard:  adb logcat -f /sdcard/xxx.log

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

logcat使用方法如下所示:

logcat [options] [filterspecs]

logcat的选项包括:

-s 设置过滤器,例如指定 "*:s"

-f <filename> 输出到文件,默认情况是标准输出。

-r [<kbytes>] Rotate log every kbytes. (16 ifunspecified).Requires -f

-n <count> Sets max number of rotated logs to<count>,default 4

-v <format> 设置log的打印格式, <format> 是下面的一种:

brief process tag thread raw time threadtime long

-c 清除所有log并退出

-d 得到所有log并退出 (不阻塞)

-g 得到环形缓冲区的大小并退出

-b <buffer> 请求不同的环形缓冲区 ("main" (默认), "radio", "events")

-B 输出log到二进制中。

过滤器的格式是一个这样的串:

<tag>[:priority]

其中 <tag> 表示log的component, tag (或者使用 * 表示所有) ,priority如下所示:

V Verbose

D Debug

I Info

W Warn

E Error

F Fatal

S Silent

事实上logcat的功能是由Android的类android.util.Log决定的,在程序中log的使用方法如下所示:

Log.v() VERBOSE

Log.d() DEBUG

Log.i() INFO

Log.w() WARN

Log.e() ERROR

以上log的级别依次升高,DEBUG信息应当只存在于开发中,INFO,WARN,ERROR这三种log将出现在发布版本中。

对于JAVA类,可以声明一个字符串常量TAG,Logcat可以根据他来区分不同的log,例如在计算器(Calculator)的类中,定义如下所示:

public class Calculator extends Activity

/* ...... */

private static final String LOG_TAG = "Calculator";

private static final boolean DEBUG = false;

private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD:Config.LOGV;

/* ...... */

由此,所有在Calculator中使用的log,均以"Calculator"为开头。

例如使用方法如下所示:

# logcat &

< 得到一个log片段 >

W/KeyCharacterMap( 130): No keyboard for id 0

W/KeyCharacterMap( 130): Using defaultkeymap:/system/usr/keychars/qwerty.kcm.bin

I/ActivityManager( 52): Displayedactivitycom.android.contacts/.DialtactsContactsEntryActivity: 983ms

I/ARMAssembler( 52):generatedscanline__00000077:03545404_00000A04_00000000 [ 29 ipp](51 ins) at[0x25c978:0x25ca44] in 1764174 ns

I/ARMAssembler( 52):generatedscanline__00000077:03515104_00000001_00000000 [ 46 ipp](65 ins) at[0x25d1c8:0x25d2cc] in 776789 ns

D/dalvikvm( 130): GC freed 834 ts / 81760 bytes in 63ms

D/dalvikvm( 52): GC freed 10588 ts / 425776 bytes in 94ms

其中W/I/D表示log的级别,“dalvikvm”“ARMAssembler”等是不同组件(component)的名称,后面括号里面的数字表示了发出log的进程号。

使用技巧:

1.使用logcat &在后台运行

2.使用-d得到所有log

3.使用-f或者重定向(>和>>)输出到文件

4.使用-s设置过滤器,得到想要的log。

当然,最重要的还是在程序中加入恰当的log。

Android开发中的logcat工具使用的更多相关文章

  1. 如何解决android logcat不打印信息在android开发中

    用eclipse进行android开发中经常遇到logcat无任何信息输出,这给我们调试程序带来很大的不便.解决办法:window-->show view-->选择android下的dev ...

  2. Android开发中,那些让您觉得相见恨晚的方法、类或接口

    Android开发中,那些让你觉得相见恨晚的方法.类或接口本篇文章内容提取自知乎Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常 ...

  3. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

  4. Android开发专业名词及工具概述

    前言: 系统的学习下Android开发中涉及到的一些专业名词 和Android开发工具 名词: 一.SDK(Software Development Kit) 软件开发工具包:一般都是一些软件工程师为 ...

  5. 在android开发中使用multdex的方法-IT蓝豹为你整理

    Android系统在安装应用时,往往需要优化Dex,而由于处理工具DexOpt对id数目的限制,导致其处理的数目不能超过65536个,因此在Android开发中,需要使用到MultiDex来解决这个问 ...

  6. 怎样实现了捕获应用中的日志在android开发中

    怎样实现了捕获应用中的日志在android开发中,大家可研究一下. Process mLogcatProc = null; BufferedReader reader = null; try { mL ...

  7. Android开发中Eclispe相关问题及相应解决(持续更新)

    1.Eclipse项目中的Android Private Libraries没有自动生成. 一般而言,在Android开发中,项目中引用到的jar包会放到项目目录中的libs中,引入库会放到Andro ...

  8. 关于Android开发中的证书和密钥等问题

    关于Android开发中的证书和密钥等问题 引言 除了Android发布应用签名时需要用到证书外,在进行google Map Api开发和Facebook SDK API开发等时都需要申请API Ke ...

  9. Android开发中常见的设计模式

    对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次.而在android开发中,必要的了解一些设计模式又是非常有必要的.对于想系统的学习设计模式的 ...

随机推荐

  1. 【Python基础】装饰器的解释和用法

    装饰器的用法比较简单,但是理解装饰器的原理还是比较复杂的,考虑到接下来的爬虫框架中很多用到装饰器的地方,我们先来讲解一下. 函数 我们定义了一个函数,没有什么具体操作,只是返回一个固定值 请注意一下缩 ...

  2. Spring Cloud Zuul实现IP访问控制

    接着上篇文章 https://www.cnblogs.com/mxmbk/p/9569438.html IP访问限制和黑白名单如何做,需要解决以下几个问题: 1.如何识别正常访问和异常访问?(一段时间 ...

  3. 原生JS返回顶部,带返回效果

    有些网站当滑到一定高度时右下角会有一个按钮,你只要一点就可以直接返回顶部了.那这个功能是怎么做到的呢.其实不算太难: 首先我们先在网页中创建一个按钮,上面写上返回顶部,把它的样式改成固定定位,之后想要 ...

  4. Android 界面滑动卡顿分析与解决方案(入门)

    Android 界面滑动卡顿分析与解决方案(入门) 导致Android界面滑动卡顿主要有两个原因: 1.UI线程(main)有耗时操作 2.视图渲染时间过长,导致卡顿 目前只讲第1点,第二点相对比较复 ...

  5. HYSBZ 3676 回文串 (回文树)

    3676: [Apio2014]回文串 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 1680  Solved: 707 [Submit][Stat ...

  6. CodeForces 17E Palisection(回文树)

    E. Palisection time limit per test 2 seconds memory limit per test 128 megabytes input standard inpu ...

  7. thinkphp5, 隐藏index.php

    tp5官网手册里的代码有误, 注意防坑, 正确的应该是: 修改.htaccess文件: <IfModule mod_rewrite.c> Options +FollowSymlinks R ...

  8. 转!!Tomcat网站上的core和deployer的区别

    转自:https://www.cnblogs.com/guxia/p/6678184.html 8.5.13 Please see the README file for packaging info ...

  9. 字符串 (string)与字节数组(byte[])之间的转换

    string str = "abc" //字符串转成编码为GB2312的byte[] byte[] pData =System.Text.Encoding.GetEncoding( ...

  10. python多线程的适用场景

    1.多线程对于计算密集型无用 需求:列表li1每个元素加1,列表li2每个元素加100 # 导入模块 import threading li1 = [11, 22, 33] # +1 li2 = [4 ...