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. Entity Framework查询生成大量的子查询,如何避免?求救

    最近使用Entity Framework做一个中型的项目,一张表含有千万条数据,并没有使用很复杂的查询,只是程序上使用了DTO进行帅选数据,且使用了分页,效果很不理想.经过跟踪sql,我发现很多简单的 ...

  2. Net应用架构设计

    N-Tier 是从架构更大的维度上划分,每一个维度都是一个Tier(在微软的ESP2.0里翻译为”级”),比如电商架构划分如下: UI 服务接口 消息.缓存中间件 数据库 ...... Tier与Ti ...

  3. crash处理core文件

    (一时心血来潮总结的,供大家参考,时间仓促,不足之处勿拍砖,欢迎讨论~)Crash工具用于解析Vmcore文件,Vmcore文件为通过kdump等手段收集的操作系统core dump信息,在不采用压缩 ...

  4. soe结果为栅格的处理方式

    背景 ArcGIS for Server通过rest的形式提供功能在很多的时候,不能满足实际的需求.在日常工作中需要对Server的功能进行扩展,esri提供的一种方式就是使用soe的形式.官方给出的 ...

  5. 服务器(Ubuntu)远程访问ipython notebook(服务器运行ipython notebook 本地浏览器访问)

    准备工作 首先要安装 ipython 推荐直接 Anaconda 搞起(装在服务器). Anaconda 帮你集成N多python相关环境(包),省得你再手动咔咔一顿安装 服务器启动ipython n ...

  6. Android---55---Web Service概述

    Web Service 是什么? /*w3school*/ Web Services 是应用程序组件 Web Services 使用开放协议进行通信 Web Services 是独立的(self-co ...

  7. Leetcode注意

    List<List<Integer>> res = new ArrayList<>();

  8. django 中模板语言的各种用法

    模板 1.视图中使用模板 模版的创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户 1.普通方法:HTML被直接硬编码在 P ...

  9. 初识ganglia

    本文地址:http://www.cnblogs.com/qiaoyihang/ 一.Ganglia是什么?Ganglia主要用来解决什么样的问题? ganglia是一个可扩展的分布式监控系统,用于监控 ...

  10. js 实现无限加载分页(适合移动端)

    一.原理:当滚动条到达底部时,执行下一页内容. 判断条件需要理解三个概念:    1.scrollHeight 真实内容的高度    2.clientHeight 视窗的高度,即在浏览器中所能看到的内 ...