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

标签 android android-logcat android-log

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

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());

任何建议

最佳答案

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

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如何以编程方式仅捕获我在应用程序中的日志条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42854584/

相关文章:

java - android-manifest 中的 android.stamp 是什么?

java - WebView - 如果存在后退历史记录,则仅显示后退按钮

java - 在 Java 中订购一个新的 Gson().toJson()

android - Logcat 不显示我的日志调用

Eclipse:Logcat 日志消失得非常快。如何在运行时保存?并增加窗口缓冲区大小?

android - 检索对 Log 的调用?例如Log.w() Log.e() Log.i()

Android 库 *.aar 不记录到 logcat?

android - 如何在 PhoneGap App 中实现数据库?

Android 如何将 emoji 转换成 Logcat 打印?

android - com.google.android.gm 是什么?