android的Log组件和logcat命令

转自:http://kyfxbl.iteye.com/blog/1244703

adb logcat -d -v time -s MainActivity:I 

-d 不阻塞,一次输出完成后结束(不加-d为阻塞,持续输出日志如果有)

-v time 日志输出格式:时间+信息

-s MainActivity  输入标签为“MainActivity”的日志

:I 日志级别为“I”以上的日志

注:日志级别(V-verbose,D-debug,I-info,W-warning,E-error,F-fatal,S-silent),*:S(确保日志输出的时候是按照过滤器的说明限制)

                   

项目进入开发阶段了,昨天做完了公共的数据库访问层,今天开始做日志框架 

原本设想的方案是导入slf4j+logback,结果dalvik转编译没成功。后来又想自己写个日志框架,但是觉得项目时间这么紧,要想很好的解决并发、死锁等问题,时间会比较赶,就放弃了。现在想了一个办法,就是用一个后台的Service,把Log组件记录的日志信息给捞出来,写到文件里 

于是先熟悉了一下android的日志框架和logcat命令,在这里总结一下 

首先android提供的日志框架的界面很简单,就是一个Log类,里面的方法包括i()、w()、d()什么的,和log4j、logback等常见的日志框架都差不多,这不过Log类做了一些精简,去掉了配置日志格式、路径、父子关系等 

只有2个方法需要重点说明一下: 

一个是getStackTraceString(Throwable tr),这个方法是传进去一个异常对象,返回一个String的字符串。其实这个方法一般不会直接用到 

另一个是w(String tag,String msg,Throwable tr),这个方法比一般的w(String tag,String msg)多传了一个Throwable类型的参数,内部会自动调用上面说的getStackTraceString()方法,把message和异常栈都记录下来。所以在记录异常日志的时候,这个方法是比较好用的 

接下来介绍一下logcat命令: 

1.adb logcat 
这行命令会打印日志信息,并且是阻塞的,有新的日志信息,都会立刻在屏幕上打印出来 

2.adb logcat -d 
这行命令也是打印日志信息,不同在于,加上-d参数会退回到命令行模式,不阻塞 

3.adb logcat -g 
这行命令是显示日志缓冲区的大小和位置 

4.adb logcat -c 
这行命令是清除日志 

5.adb logcat -v [brief,process,tag,thread,raw,time,threadtime,long] 
这行命令是设置日志的显示格式,一般比较常用的是adb logcat -v time,因为会显示时间 

6.adb logcat -d -v time -s [TAG]:[Level] 
这行命令是关键了,举个实际例子,adb logcat -d -v time -s MainActivity:I 
这个命令会对日志进行过滤,只显示出级别是I以上,并且TAG标签是MainActivity的日志 

最后项目记录日志的方式,就采用Log组件进行记录,然后通过logcat命令,把日志信息捞到文件里并保存 

PS:Log是在android.util.log包里,原本以为android就只提供了这个日志框架。。。可是刚刚突然又发现,还有一个包java.util.logging,里面也提供了另外一种日志框架,而且似乎比较强大,可以通过FileHandler类,直接把日志信息记录到文件里(Handler就是类似于log4j和logback中appender的组件)。所以还要研究一下,如果这种方式更好的话,可以考虑用这个框架来实现日志

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值