如何获取 android 的系统日志 logcat

 我来答
time陌言成殇
2014-12-05 · TA获得超过8.4万个赞
知道大有可为答主
回答量:1.4万
采纳率:91%
帮助的人:9409万
展开全部

您好,很高兴为您解答。

读取日志需要的权限

<uses-permission android:name="android.permission.READ_LOGS"/>


主要代码

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
            {
                ArrayList<String> cmdLine=new ArrayList<String>();   //设置命令   logcat -d 读取日志
                cmdLine.add("logcat");
                cmdLine.add("-d");
                
                ArrayList<String> clearLog=new ArrayList<String>();  //设置命令  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): message

process                      W( 876) message (tag)

tag                             W/tag : message

thread                        W( 876:0x37c) message

raw                            message

time                           09-08 05:40:26.729 W/tag ( 876): message

threadtime                 09-08 05:40:26.729 876 892 W tag : message

long                           [09-08 05:40:26.729 876:0x37c W/tag ] message


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

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

                                                                                                                            ~ O(∩_∩)O~

爱唐伯虎点文香
2018-11-02 · TA获得超过3.3万个赞
知道大有可为答主
回答量:1778
采纳率:94%
帮助的人:175万
展开全部
直接在命令行重定向即可将logcat中输出的日志保存到文件中。
android开发中如果如果要将logcat中输出信息的保存到文件中,按以下步骤:
1. 示例1: adb logcat > /sdcard/mylogcat.txt,表示将logcat的输出重定向到/sdcard/mylogcat.txt文件中。
2. 示例2: db logcat > D:/Temp/1.txt(1.txt必须存在,才能写入logcat内容),表示将logcat输出的日志保存到电脑D盘Temp目录下的1.txt中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友997794d
2018-11-02 · TA获得超过230个赞
知道小有建树答主
回答量:146
采纳率:62%
帮助的人:38.8万
展开全部
Android studio的最低下有logcat或者Android monitor这一选项,如果是已有app,就要看开发时有没有将logcat写到本地的操作了,一般都不会留下,logcat更多是用于开发时调试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友455f0f8
2014-12-05 · TA获得超过142个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:97.5万
展开全部
Window-->Show View-->Others -->android-->logcat
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
呓曲流觞
2018-11-04
知道答主
回答量:8
采纳率:0%
帮助的人:6244
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式