将应用程序事件(logcat)保存在sd上的文件中

时间:2013-01-19 21:43:55

标签: android logcat

我想将我的app logcat事件保存在SD卡上的文本文件中。 我的警报应用程序在我和我的朋友设备中正常工作,但其他人在我的应用程序上有错误。 例如,他们说应用程序中的警报是在错误的时间,但我没有在我和我的朋友设备中看到此错误。 由于这个问题和其他问题,我希望保存所有事件logcat相关我的应用程序,自动。所以他们发送日志文件给我来解决问题。 我怎样才能做到这一点? 谢谢 抱歉我的英文不好

5 个答案:

答案 0 :(得分:3)

您可以通过以下方式获取logcat:

static final int BUFFER_SIZE = 1024;

public String getLogCat() {
    String[] logcatArgs = new String[] {"logcat", "-v", "time"};

    Process logcatProc = null;
    try {
        logcatProc = Runtime.getRuntime().exec(logcatArgs);
    }
    catch (IOException e) {
        return null;
    }

    BufferedReader reader = null;
    String response = null;
    try {
        String separator = System.getProperty("line.separator");
        StringBuilder sb = new StringBuilder();
        reader = new BufferedReader(new InputStreamReader(logcatProc.getInputStream()), BUFFER_SIZE);
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line);
            sb.append(separator);
        }
        response = sb.toString();
    }
    catch (IOException e) {
    }
    finally {
        if (reader != null) {
            try {
                reader.close();
            }
            catch (IOException e) {}
        }
    }

    return response;
}

然后,您可以将此String保存到SD卡。

答案 1 :(得分:1)

此类功能已由ACRA Android库实施。该库会检测到崩溃,并将崩溃信息发送到Google文档电子表格或您自己的目的地。

答案 2 :(得分:1)

  

您可以通过以下方式获取logcat:

static final int BUFFER_SIZE = 1024;

public String getLogCat() {
    String[] logcatArgs = new String[] {"logcat", "-v", "time"};

    Process logcatProc = null;
    try {
        logcatProc = Runtime.getRuntime().exec(logcatArgs);
    }
    catch (IOException e) {
        return null;
    }

    BufferedReader reader = null;
    String response = null;
    try {
        String separator = System.getProperty("line.separator");
        StringBuilder sb = new StringBuilder();
        reader = new BufferedReader(new InputStreamReader(logcatProc.getInputStream()), BUFFER_SIZE);
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line);
            sb.append(separator);
        }
        response = sb.toString();
    }
    catch (IOException e) {
    }
    finally {
        if (reader != null) {
            try {
                reader.close();
            }
            catch (IOException e) {}
        }
    }

    return response;
}
  

然后,您可以将此String保存到SD卡。

来自“Dororo”的回答对我来说不起作用,因为它总是因为许多行而陷入困境,但我不知道如何解决这个问题。

答案 3 :(得分:1)

除非您指定'-d'arg。

,否则logcat将阻止读取新日志

尝试

   String[] logcatArgs = new String[] {"logcat", "-d", "-v", "time"};

答案 4 :(得分:1)

在线程内执行以避免ANR