原博文地址:点击打开链接


Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用.

在使用 logcat 之前,请确保手机的 USB调试模式 已经开启,可以通过" Setting->Application->Development-> USB debugging"来开启。 logcat本身是android的shell的一个命令,你可以通过“adb shell”进入shell后执行logcat命令,也可以通过"adb logcat"直接运行。 语法: [adb] logcat [<option>] ... [<filter-spec>] ... 选项: -b <buffer> 指定要查看的日志缓冲区,可以是 system , events , radio,main . 默认值是 system和main -c 清楚屏幕上的日志. -d 输出日志到屏幕上. -f <filename> 指定输出日志信息的<filename> ,默认是stdout . -g 输出指定的日志缓冲区,输出后退出. -n <count> 设置日志的最大数目<count> .,默认值是4,需要和 -r 选项一起使用。 -r <kbytes> 每<kbytes> 时输出日志,默认值为16,需要和-f 选项一起使用. -s 设置默认的过滤级别为silent. -v <format> 设置日志输入格式,默认的是brief 格式,要知道更多的支持的格式,参看Controlling Log Output 参数<filter-spec> 参数 <filter-spec> 用于对某类的tag的 日志输出进行过滤 。每一个输出的Android日志信息都有一个tag和它的优先级. 日志的标签是系统部件原始信息的一个简要的标志。这个tag就是Log.i,Log.d,Log.i,Log.w,Log.e,Log.wtf系列函数中的tag. 对于System.out.print系列函数所对于的tag,其实就是"System.out" <filter-spec>以“tag:priority”的形式来对日志输出进行过滤的 优先级priority有以下几种,按照从低到高顺利排列如下: V — Verbose (lowest priority) 对应于Log.i()系列函数 D — Debug 对应于Log.d()系列函数 I — Info 对应于Log.i()系列函数 W — Warning 对应于Log.w()系列函数 E — Error 对应于Log.e()系列函数 F — Fatal 对应于Log.wtf()系列函数 S — Silent (highest priority, on which nothing s ever printed) 在运行logcat的时候在前两列的信息中你就可以看到 logcat 的标签列表和优先级别,它是这样标出的:<priority>/<tag> . <filter-spec>中的优先级是指显示 该优先级即其以上优先级得日志 比如对于 robin:D 表示显示tag为 robin 的所有 Debug及其以上优先级 的日志。<filter-spec>只是的针对某类的tag的日志进行过滤,如果有多个针对同一个tag的过滤的话,以最后一个为准。另外对于tag,可以使用通配符。对于在tag中没有使用统配符的<filter-spec>,我称它为显式的日志过滤器;而对于在tag中使用统配符的,我称它它为隐式的日志过滤器。如果这两种过滤器有对着同一个tag的过滤的话,以显示的日志过滤器为准。如果是同一种的话(显式/隐式),以后一个为准。 因为<filter-spec>只是指明了对某一类tag应该进行如何过滤 它没说明的其他tag,将采用系统默认的方式(*:V),即全部输出 。我们可以通过选项" -s "来设置<filter-spec>中没有说明的 tag 来都不输出,相当于" *.S " 实例1 adb logcat -s robin:i 这样将显现tag为robin的Info及以上优先级的所有的日志。该命令等同于 adb logcat robin:i *:S -b选项 该选项用于指定要操作的日志缓冲区,可以是 system , events , radio , main .它们分别对应 /dev/log 文件夹下的 system , events , radio , main 日志文件 。系统默认的是 system main 。该选项可以出现多次,以指定多个日志缓冲去。 比如: adb logcat -b system -b main -b events -b radio -s robin:i 日志输出的开头几行说明了你当前查看的哪些日志缓冲区,比如上面的语句的前几行就是: --------- beginning of /dev/log/radio --------- beginning of /dev/log/events --------- beginning of /dev/log/system --------- beginning of /dev/log/main 其实“ adb logcat -s robin:i ”相当于“ adb logcat -b system -b main -s robin:i ”。我们的Log.i,Log.d,Log.i,Log.w,Log.e,Log.wtf系列函数及 System.out.print 系列函数以及 System.erro.print 系列都输出到了 main 缓冲区。因此我们一般用默认的就足够了。 events 缓冲区对应的日志文件 /system/etc/event-log-tags ,使用android.util.EventLog生成的日志就输出到该缓冲区。 android.database.sqlite.SQLiteDatabase logTimeStat() 函数就是使用 EventLog 来进行日志输出的 -c选项 该选项用于清空你所指定的日志缓冲区。应该就是清除其对应的日志文件 -s选项 该选项将把 tag 的默认过滤级别设置为 silent ,这样tag默认就不显示。系统把tag的默认过滤级别是设置为Verbose,这样其tag默认就是要显示的。 -f选项 该选项指定输出日志信息的<filename> ,默认是stdout . 但是这里的文件是指android系统上的文件。如果我们想把日志输出到本地window系统的话,请采用如下形式的命令: adb logcat -s robin:i>1.log 这样日志就输出了你的window的当前目录的1.log文件中。 -v选项 日志信息包括了许多元数据域包括标签和优先级。可以通过 -v选项 可以用来指定 日志的输出格式,以显示出特定的元数据域。 brief Display priority/tag and PID of originating process (the default format).显示prority/tag,产生日志的进程的id,和日志消息本身。它是日志默认的输出格式。 process Display PID only.显示priority,产生日志的进程的id,和日志消息本身 tag Display the priority/tag only.显示prority/tag,和消息本身 thread Display process:thread and priority/tag only.显示priority,线程和日志消息本身 raw Display the raw log message, with no other metadata fields.只显示消息本身 time Display the date, invocation time, priority/tag, and PID of the originating process.显示产生日志的时间,prority/tag,产生日志的进程Id,和日志消息本身。 long Display all metadata fields and separate messages with a blank lines.显示产生日志的时间,prority/tag,产生日志的进程Id,和日志消息本身。但是日志消息本身另其一行进行显示。每个日志之间空一行。 当启动了 logcat ,你可以通过-v 选项来指定输出格式: [adb] logcat [-v <format>] 实例2: adb logcat -v time -s robin:v 注意是通过 -v 选项 来设置输出格式.

更多相关文章

  1. android ListView根据字母排序和定位
  2. Android编译详解之lunch命令
  3. unity在android真机上的调试
  4. Android读写XML(下)――创建XML文档
  5. 菜单 Android(安卓)Menu
  6. Android(安卓)http超时选项的测试
  7. Android(安卓)HDMI输出设置流程
  8. android如何配置基本环境
  9. Android(安卓)JNI打印c\c++日志信息

随机推荐

  1. android测试之monkey
  2. android屏幕旋转时,Activity不重新调用onC
  3. Android的多媒体框架OpenCore介绍
  4. Android(安卓)Studio项目/Flutter 案例Gr
  5. Android(安卓)SDK Content loader has en
  6. Android开发这么久你竟然还不知道Dropbox
  7. Android(安卓)Studio打包生成Jar包的方法
  8. Android之PopupWindow弹出对话框 Android
  9. 对android中事件的分发的理解
  10. android中怎样将自己的应用程序的签名改