一、logcat对日志过滤

1.# logcat --help

# logcat --help
Usage: logcat [options] [filterspecs]
options include:
-s Set default filter to silent.
Like specifying filterspec '*:s'
-f <filename> Log to file. Default to stdout
-r [<kbytes>] Rotate log every kbytes. ( if unspecified). Requires -f
-n <count> Sets max number of rotated logs to <count>, default
-v <format> Sets the log print format, where <format> is one of: brief process tag thread raw time threadtime long -c clear (flush) the entire log and exit
-d dump the log and then exit (don't block)
-t <count> print only the most recent <count> lines (implies -d)
-t '<time>' print most recent lines since specified time (implies -d)
-T <count> print only the most recent <count> lines (does not imply -d)
-T '<time>' print most recent lines since specified time (not imply -d)
count is pure numerical, time is 'MM-DD hh:mm:ss.mmm'
-g get the size of the log's ring buffer and exit
-b <buffer> Request alternate ring buffer, 'main', 'system', 'radio',
'events', 'crash' or 'all'. Multiple -b parameters are
allowed and results are interleaved. The default is
-b main -b system -b crash.
-B output the log in binary.
-S output statistics.
-G <size> set size of log ring buffer, may suffix with K or M.
-p print prune white and ~black list. Service is specified as
UID, UID/PID or /PID. Weighed for quicker pruning if prefix
with ~, otherwise weighed for longevity if unadorned. All
other pruning activity is oldest first. Special case ~!
represents an automatic quicker pruning for the noisiest
UID as determined by the current statistics.
-P '<list> ...' set prune white and ~black list, using same format as
printed above. Must be quoted. filterspecs are a series of
<tag>[:priority] where <tag> is a log component tag (or * for all) and priority is:
V Verbose (优先级最低)
D Debug
I Info
W Warn
E Error
F Fatal
S Silent (supress all output) (最高优先级,不会打印任何内容) '*' means '*:d' and <tag> by itself means <tag>:v If not specified on the commandline, filterspec is set from ANDROID_LOG_TAGS.
If no filterspec is found, filter defaults to '*:I' If not specified with -v, format is set from ANDROID_PRINTF_LOG
or defaults to "brief"

1. logcat命令位置:/system/bin/logcat

2.logcat的常用用法

# logcat *:W 过滤日志则会将该级别及以上的日志输出

# logcat ActivityManager:I MyApp:D *:S 表示输出tag=“ActivityManager”的Info以上级别日志,输出tag=“MyApp”的Debug以上级别日志,及其它tag的Silent级别日志(即屏蔽其它 tag 日志)。

# logcat -d logcat应该是动态打印的,加-d后打印完log后退出,不阻塞
# logcat -t 20 只打印最近的20行log,-T也是类似的功能,但是打印完后不退出。
# logcat -f a.txt -f保存到文件中,不使用重定向符号的
# logcat | grep -i myapp 忽略大小写。
# logcat | grep --color=auto -i priv-app 匹配到的“priv-app”会显示出颜色
# logcat | grep --color=auto 1979 只打印出进程PID为1979的log
# logcat -c && logcat
# logcat -v time 打印时加上时间
# logcat -g 打印各个环形缓冲区的大小后退出
# logcat -S 打印出统计信息
# logcat | grep -E "Theft|u-blox" grep -E 正则表达式,可以一次性检索多个关键字
# logcat <tag1>:<priority1> <tag2>:<priority2> 过滤低优先级的日志

# logcat *:E   只查看错误打印

3.有 3 种方式使用 logcat 打印日志:
可以通过 IDE(比如 Android Studio)提供的 logcat 窗口查看打印的日志
可以通过 adb 命令使用 logcat 在本地计算机进行日志查看
通过 adb 命令进入模拟器或者所连设备的 shell 命令窗口,进行 logcat 的操作和使用

4.设置输出日志等级
通过设置优先级,过滤掉低优先级的日志,使用方式如: adb logcat <tag1>:<priority1> <tag2>:<priority2>
示例: logcat PowerManagerService:I PackageManager:I 表示logcat时不打印PowerManagerService和PackageManager的优先级低于Info的log

5.logcat选择打印的缓冲区:
# logcat -b <buffer> 可以指定要打印的环缓冲区,“main”,“system”,“radio”或“events”。 允许多个-b连用,这样打印的结果是交错的,默认为: -b main -b system -b crash。
radio - 查看缓冲区的相关的信息.
events - 查看和事件相关的的缓冲区.
main - 查看主要的日志缓冲区.
system - 与系统相关的日志信息.

6. logcat默认的几种输出格式为

格式:logcat -v threadtime

(1)brief格式为:<priority>/<tag>(<pid>): <message>  eg: D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0

(2)process格式为:<priority>(<pid>) <message>  eg: D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)

(3)tag格式为:<priority>/<tag>: <message>  eg: D/HeadsetStateMachine: Disconnected process message: 10, size: 0

(4)raw格式为:<message>   eg: Disconnected process message: 10, size: 0

(5)time格式为:<datetime> <priority>/<tag>(<pid>): <message>  eg: 08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0

(6)threadtime格式为:<datetime> <pid> <tid> <priority> <tag>: <message>  eg: 08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0

(7)long格式为:[ <datetime> <pid>:<tid> <priority>/<tag> ] <message>  eg: [ 08-28 22:39:39.974 1785: 1832 D/HeadsetStateMachine ] Disconnected process  message: 10, size: 0

二、日志打印函数

1.程序中使用ALOGx(),SLOGx(),RLOGx()来分别打印app,system,radio的log,

x表示下面6种打印级别:
V Verbose
D Debug
I Info
W Warn
E Error
F Fatal

比如:
#define LOG_TAG "LedHal"
ALOGI("hal_led_ioctl called: which=%d, status=%d", which, status);
打印如下:

I/LedHal ( 2284): hal_led_ioctl called: which=0, status=0 //打印等级/Tag (PID): message

三、日志统计

1.# logcat -b all -S 可以统计出各个log buffer中最健谈的log的进程、UID、TAG

# logcat -b all -S
size/num main radio events system crash stats performance security kernel Total
Total / / / / / / / / / /
Now / / / / / / /
Logspan ::38.987(3.9%) ::44.731(24.2%) ::41.166(96.9%) ::44.791(%) :03.21 ::35.716 ::48.058
Overhead
update time=, report time=, buffer rate = Byte/sec, log rate = sec-
buffer chatty rate = Byte/sec, log chatty rate = sec- 最健谈的main log:
Chattiest UIDs in main log buffer: Size +/- Pruned
UID PACKAGE BYTES NUM
com.android.systemui -%
system -%
PID/UID COMMAND LINE " "
/ system_server
/ com.coloros.persist.system 最健谈的main log:
Chattiest UIDs in radio log buffer: Size +/- Pruned
UID PACKAGE BYTES NUM
radio -3.6%
system .2X 最健谈的event log:
Chattiest UIDs in events log buffer: Size +/- Pruned
UID PACKAGE BYTES NUM
system +4.3%
PID/UID COMMAND LINE " "
/ system_server 最健谈的system log:
Chattiest UIDs in system log buffer: Size +/- Pruned
UID PACKAGE BYTES NUM
system -%
PID/UID COMMAND LINE " "
/ system_server
/ com.coloros.persist.system 最健谈的crash log:
Chattiest UIDs in crash log buffer: Size
UID PACKAGE BYTES
root 最健谈的performance log:
Chattiest UIDs in performance log buffer: Size
UID PACKAGE BYTES
system
PID/UID COMMAND LINE "
/ system_server 最健谈的PID:
Chattiest PIDs: Size Pruned
PID/UID COMMAND LINE BYTES NUM
/ com.android.phone
/ system_server 最健谈的TID:
Chattiest TIDs: Size Pruned
TID/UID COMM BYTES NUM
/ com.android.phone
/ android.bg 最健谈的events log中的TAG:
Chattiest events log buffer TAGs: Size Prune
TAG/UID TAGNAME BYTES NUM
auditd
/ am_pss 最健谈的TAG:
Chattiest TAGs: Size
TID/PID/UID LOG_TAG NAME BYTES
/ SST
auditd

Android中logcat和日志打印的更多相关文章

  1. Android中对Log日志文件的分析[转]

    一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, a ...

  2. 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译

     1  编写以下案例(下面的三个按钮都调用了底层的C语言): 项目案例的代码结构如下: 2 编写DataProvider的代码: package com.example.ndkpassdata; ...

  3. android adb logcat获取日志文件

    一般情况,可以直接在电脑终端上输入logcat来查看手机运行日志,但是测试工作者为了抓取日志文件来给开发人员,需要把日志导出到特定文件中.如下文. 以小米1s手机为例 步骤1:打开第一个终端窗口 ad ...

  4. android中Logcat的深层理解

    Android的开发也能够归类为嵌入式设备的开发.即便不是嵌入式开发,依旧要注意对内存和处理的使用.养成一个好的习惯对自己的帮助是非常大的. 在Log的源代码中能够看到这种凝视: The order ...

  5. 【转载】理解Android中垃圾回收日志信息

    本文转自:http://droidyue.com/blog/2014/11/08/understanding-garbage-collection-output-messages-in-android ...

  6. Android中垃圾回收日志信息

    原因 GC_CONCURRENTfreed 178K, 41% free 3673K/6151K, external 0K/0K, paused 2ms+2msGC_EXPLICITfreed 6K, ...

  7. 在android中使用logback-android日志框架配置 slf4j + logback

    为什么使用 slf4j + logback logbak定位于log4j的替代者,logback同样支持slf4j,方便被替换.在Android平台上,我在使用log4中遇到tag混乱的问题.相比lo ...

  8. Android adb logcat输出日志显示不全解决方案

    在终端中使用adb logcat打印服务器json数据,如果返回数据过大超过4000字节(4K)即会截断不显示 原因:logcat在对于message的内存分配大概是4k左右.所以超过的内容都直接被丢 ...

  9. android中Logcat的TAG过滤

    如果代码中有这样的log: Log.e("Foo", "error in foo"); Log.d("Foo", "debug i ...

随机推荐

  1. python模块——socket (实现简单的C/S架构端通信操作CMD)

    # 服务端代码#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = "loki" import socket impo ...

  2. LeetCode--070--爬楼梯

    problem description: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 ...

  3. LeetCode--027--移除元素

    问题描述: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间 ...

  4. 20170728xlVba还是这个混蛋

    Public Sub Main22() If Now() >= #1/1/2018# Then Exit Sub Dim strText As String Dim Reg As Object, ...

  5. 使用Maven + Jetty时,如何不锁定js css 静态资源

    Jetty会使用内存映射文件来缓存静态文件,包括js,css文件. 在Windows下,使用内存映射文件会导致文件被锁定,所以当Jetty启动的时候无法在编辑器对js或者css文件进行编辑. 解决办法 ...

  6. Weird journey CodeForces - 788B (路径计数)

    大意:$n$结点$m$条边无向图, 满足 $(1)$经过$m-2$条边$2$次 $(2)$经过其余$2$条边$1$次 的路径为好路径, 求所有好路径数 相当于边加倍后再删除两条边, 求欧拉路条数 首先 ...

  7. robot framework学习笔记1之_环境安装(win7)

    一.简介 Robotframework是基于Python的自动化测试框架.使用关键字驱动的测试方法,自带丰富的库函数可直接引用,可使用Java/Python进行功能库扩展,测试用例使用TSV/HTML ...

  8. hdu多校2C

    题意:找多条路径覆盖所有的边,求最小路径数,要求输出路径 题解:新建一个点n+1,所有奇点向它连边,然后跑欧拉回路,最后把新加的边删去,一段连续的边就是一条路径 = =但是由于太久没写欧拉回路以及之前 ...

  9. ccf交通规划

    一.试题 问题描述  G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统.  建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改 ...

  10. Mybatis学习总结--------Mybatis <where>标签 (九)

      <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WH ...