logcat日志(logcat日志级别6种)

http://www.itjxue.com  2023-01-26 18:44  来源:未知  点击次数: 

如何抓取android logcat日志

您好,很高兴为您解答。

1,安装sdk(参考android

sdk环境安装)

2,使用数据线链接手机,在手机助手的sdcard中建立一个1.log的文件

3,程序运行cmd

4,输入抓取命令:logcat

-s

'*:e'

/mmt/sdcard/1.log

5,使用手机崩溃一次

6,查看日志抓取文件,分不清楚是那个时间段所造成的后果

7,加入命令:-v

time

就会显示出时间

8,输入命令logcat

-v

time

-s

'*:e'

/mmt/sdcard/1.log

9,查看结果

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

~

o(∩_∩)o~

求教怎么在android的Logcat中输出日志

android开发中如果碰到logcat中不输出信息的情况,请按以下步骤排除问题:

1. 重启Eclipse和android模拟器

2. 如果是真机测试的话,数据线拔下重新连接

3. 打开logcat,并设置level,执行命令如下(android 升级之后 adb 在 platform-tools中,不在tools中)adb shellecho 1 /sys/kernel/logger/log_main/enable

说明:将1写入日志开关文件,1为开,0为关echo 2 /sys/kernel/logger/log_main/priority说明:将代表level的2写入优先级文件

4. 重启adb,如果使用eclipse,先关闭eclipse,再重启adb,再启动eclipseadb kill-serveradb start-server

5. 此时logcat应该可以工作了,如果仍旧不工作,则更新adbandroid update adb

6. 重复第三步,此时logcat应该可以工作了,如果仍旧不工作,找到个人主目录下的android目录,如C:\Documents and Settings\Administrator\.android 找到这个目录下的adb_usb.ini文件,其内容默认只有三行,全为注释,在后面添加一行,内容为0x12d1

7. 重复第三步,此时logcat应该可以工作了

如果logcat还不输出日志

1.打开 开发工具中的 DDMS

2.点击所有连接设备的信息,连接几个显示几个

3.双击连接的设备,logcat就显示哪个设备的信息了

如何获取 android 的系统日志 logcat

您好,很高兴为您解答。

读取日志需要的权限pre t="code" l="java"uses-permission android:name="android.permission.READ_LOGS"/

主要代码pre t="code" l="java"package mt.fzgh;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.ArrayList;

public class MyLog

{

public static class MLog //静态类

{

public static void getLog()

{

System.out.println("--------func start--------"); // 方法启动

try

{

ArrayListString cmdLine=new ArrayListString(); //设置命令 logcat -d 读取日志

cmdLine.add("logcat");

cmdLine.add("-d");

ArrayListString clearLog=new ArrayListString(); //设置命令 logcat -c 清除日志

clearLog.add("logcat");

clearLog.add("-c");

Process process=Runtime.getRuntime().exec(cmdLine.toArray(new String[cmdLine.size()])); //捕获日志

BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(process.getInputStream())); //将捕获内容转换为BufferedReader

// Runtime.runFinalizersOnExit(true);

String str=null;

while((str=bufferedReader.readLine())!=null) //开始读取日志,每次读取一行

{

Runtime.getRuntime().exec(clearLog.toArray(new String[clearLog.size()])); //清理日志.这里至关重要,不清理的话,任何操作都将产生新的日志,代码进入死循环,直到bufferreader满

System.out.println(str); //输出,在logcat中查看效果,也可以是其他操作,比如发送给服务器..

}

if(str==null)

{

System.out.println("-- is null --");

}

}

catch(Exception e)

{

e.printStackTrace();

}

System.out.println("--------func end--------");

}

}

}

这里比较令人纠结的一点就是日志的清理 logcat -c 如果不加入 清理 在buffer满为止,代码自身能够迭代6~7次.

附带一份logcat的 命令不过好像 过滤器 指令有问题.慎用选项 说明 -s 默认设置过滤器 - f 文件 输出到日志文件 -c 清除日志 -d 获取日志 -g 获取日志的大小 - v 格式 设置日志(见下面的格式打印格式) - v 格式 例brief W/tag ( 876): messageprocess W( 876) message (tag)tag W/tag : messagethread W( 876:0x37c) messageraw messagetime 09-08 05:40:26.729 W/tag ( 876): messagethreadtime 09-08 05:40:26.729 876 892 W tag : messagelong [09-08 05:40:26.729 876:0x37c W/tag ] message

如若满意,请点击右侧【答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,!

~ O(∩_∩)O~

Android 日志系统分析(三):logcat

logcat 作为读取日志的工具,相当于client 的角色;在前两篇文章中,关于 logcat 如何与其他部分沟通获取日志信息的流程已经介绍的比较清晰,本文不在赘述,转而归纳一下 logcat 的一些常用指令,并对其中一些做详细分析

Android 日志系统为日志消息保留了多个环形缓冲区,但并非多有的日志消息都会发送到默认的环形缓冲区。这里可以采用 logcat -b 命令查看设备的其他缓冲区:

如果需要查看内核空间日志信息,可采用如下几种方式查看:

1、读取 /proc/kmsg ,命令如下

读取/proc/kmsg属于消费型读取,读取之后再次读取不会显示已经读取过的日志信息

2、读取 /dev/kmsg ,命令如下

读取/dev/kmsg会显示缓存区里面的所有日志信息。新写入的日志信息会不断累加到日志缓冲器中

3、使用 dmesg 命令读取

dmesg命令读取一次只显示一部分日志,非阻塞执行

使用 -v 命令来修改 log 的输出格式,以显示特定的元数据字段:

优先级:

logcat -f 命令可以将日志消息输出到指定的文件中。这里我们需要确定的一件事是 logcat 作为客户端的角色,会将通过 liblog 获得的日志信息进行格式解析、格式化处理,而 liblog 库本身并不存在保存、解析的功能。这里来对 -f 指令做一下解析:

在 _logcat() 函数中解析 -f 指令,设置日志输出文件。例如 logcat -f sdcard/log.txt ,则 context-outputFileName 赋值为 sdcard/log.txt ;

以 printBinary() 函数为例:

logcat.cpp # printBinary() :

[ 1 ] Android物语:logcat

[ 2 ] android调试——logcat详解

[ 3 ] 玩转Android10源码开发定制(12)内核篇之logcat输出内核日志

android logcat抓取app日志

一.logcat抓log方法:adb logcat命令,可以加条件过滤

1.安装SDK(参考android sdk环境安装)

2.使用数据线链接手机,在手机助手的sdcard中建立一个1.log的文件或在抓日志时直接导出到电脑位置

3.程序运行cmd,进入到含有adb.exe目录

4.输入adb devices 查看设备是否连上

5.输入抓取命令:adb logcat -s *:E /mmt/sdcard/1.log或logcat -s '*:E' d:/1.log,

6.使用手机打开app操作崩溃一次(如果想中途停止按下ctrl+c)

7.查看日志抓取文件,分不清楚是那个时间段所造成的后果

8.加入命令:-v time 就会显示出时间

9.输入命令adb logcat -v time -s *:E /mmt/sdcard/1.log(eg:adb logcat -v time -s appname:Ed:/1.log)

10.查看结果

ps:

adb logcat -v time -s appname:Ed:/1.log

-v 显示日志格式 ?-v time 以时间为显示格式

-s 默认过滤,不显示默认tag。系统把tag的默认过滤级别是设置为Verbos,tag需要显示。如果设置-S等同于*:V

appname:E 显示appname操作中优先级大于等于“error”的日志

二、log过滤--根据Log信息级别

? V-(verbose) -明细?(最低优先级)???D-(debug)-调试? I-(information)-信息? W-(warning)-警告? E-(error)-错误

??F — 严重错误??S — 无记载 (最高优先级,没有什么会被记载)

三、 ?

log过滤-

? log过滤器使用( ?

adb logcat tag:priprity)

过滤器表达式的格式是tag:priority ... ,其中tag是标记(可以是具体的,*表示所有), priority是最小的优先级,可以是组合

adblogcat ActivityManager:I MyApp:D *:S

adblogcat * :W -----所有优先级大于等于“warning”的日志

adblogcat * :E -----所有优先级大于等于“error”的日志

四、log输出-log控制日志格式 adb logcat -v 格式

brief — 显示优先级/标记和原始进程的PID (默认格式)

process — 仅显示进程PIDtag — 仅显示优先级/标记

thread — 仅显示进程:线程和优先级/标记

raw — 显示原始的日志信息,没有其他的元数据字段

time — 显示日期,调用时间,优先级/标记,PID

long —显示所有的元数据字段并且用空行分隔消息内容

eg:adb logcat -v thread

五.log输出-附加缓冲区:adb logcat -b?

radio?—?查看包含在无线/电话相关的缓冲区消息

events?—?查看事件相关的消息

main?—?查看主缓冲区?(默认缓冲区)

adb logcat -b ?radio

什么也不加代表默认缓冲

六.log输出-log选项列表

-b? 指定要查看的日志缓冲区,可以是system,events?,radio,main?. 默认值是system和main?。

-c?清楚屏幕上的日志.?

-d?输出日志到屏幕上.?

-f? 指定输出日志信息的,默认是stdout .?

-g?输出指定的日志缓冲区,输出后退出.?

-n? 设置日志的最大数目.,默认值是4,需要和 -r 选项一起使用。?

-r? 每时输出日志,默认值为16,需要和-f 选项一起使用.?

-s?设置默认的过滤级别为silent.?

-v? 设置日志输入格式

(责任编辑:IT教学网)

更多

相关Painter教程文章

推荐Painter教程文章