android如何以编程方式仅捕获应用程序中的日志条目

Posted

技术标签:

【中文标题】android如何以编程方式仅捕获应用程序中的日志条目【英文标题】:android how to capture only my log entries in the application programmatically 【发布时间】:2017-08-08 20:06:26 【问题描述】:

我想单独获取我放在应用程序中的日志条目并将其显示在可滚动的文本视图中。例如

Log.e(SAMPLE_ACTIVITY_TAG, "App started") 

我只需要那些错误日志,我不想要其他不需要的日志。 logcat命令行工具可以吗?我已经尝试了下面的代码,但我得到了完整的应用程序设备日志

 Process process = Runtime.getRuntime().exec("logcat -d");
        BufferedReader bufferedReader = new BufferedReader(
                new InputStreamReader(process.getInputStream()));

        StringBuilder log=new StringBuilder();
        String line = "";
        while ((line = bufferedReader.readLine()) != null) 
            log.append(line +"\n");
        
        textView.setText(log.toString());
        textView.setMovementMethod(new ScrollingMovementMethod());

任何建议

【问题讨论】:

【参考方案1】:

请使用以下给定命令创建进程对象:

logcat --pid=PID -d

您需要将 PID 替换为您的应用程序进程 ID。可以使用以下代码行获取进程ID

int pid = android.os.Process.myPid();

您的最终源代码应该是这样的。请试一试

        int pid = android.os.Process.myPid();
        String command = "logcat --pid="+pid+" -d";
        Process process = Runtime.getRuntime().exec(command);
        BufferedReader bufferedReader = new BufferedReader(
                new InputStreamReader(process.getInputStream()));

        StringBuilder log=new StringBuilder();
        String line = "";
        while ((line = bufferedReader.readLine()) != null) 
            log.append(line +"\n");
        
        textView.setText(log.toString());
        textView.setMovementMethod(new ScrollingMovementMethod());

【讨论】:

以上是关于android如何以编程方式仅捕获应用程序中的日志条目的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式捕获iPhone控制台日志? [关闭]

我如何以编程方式锁定手机android

如何仅以编程方式在android中添加动态网格布局?

提高android应用程序中以编程方式捕获的图像的质量[重复]

如何等到相机在android中捕获图像?

以编程方式读取应用程序的 logcat