如何在Android应用中收集LogCat消息

3

我有一个应用程序,想要收集指定级别和标签的LogCat消息。

我能否在某个时刻获取累积的消息?我不想逐条收集消息,它们应该像使用adb读取实际日志时的总和一样。这可能吗?


1
请查看我的之前的帖子:https://dev59.com/hWIj5IYBdhLWcg3wx30x - Peri Hartman
你的回答看起来很有前途,特别是 extractLogToFile。但是,当我在一部Android 2.3手机上使用以下命令时:"logcat -d -v MyTAG:v *:S",始终会在 reader.read() 中得到一个-1。我应该设置什么呢? - Nestor
这可能意味着您在logcat上的过滤器排除了所有行。尝试移除过滤器,看看是否有输出。 - Peri Hartman
我没有所需的权限。添加后,它运行良好。 - Nestor
2个回答

7
尝试这个:注意在Android 4中,除非你拥有root访问权限,否则只能看到由您自己的应用程序写入的日志消息。
public static String getLog(Context c) {
    try {
        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);
            log.append("\n");
        }

       return log.toString();

    } catch (IOException e) {
       return null;
    }
}

一个非常重要的事情:阅读日志需要权限!在你的清单文件中使用以下代码:**<uses-permission android:name="android.permission.READ_LOGS" />** - Nestor
2
您不需要此权限来收集Api 16及以上版本中自己的应用程序日志。请参阅hackbod(Android软件工程师)的此帖子。https://groups.google.com/d/msg/android-developers/6U4A5irWang/AvZsrTdfICIJ - Kuffs
谢谢提供的信息。我使用的日志收集器从API级别10开始。 - Nestor

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接