如何从Java程序获取android系统日志

时间:2010-08-25 00:10:42

标签: java android logging

有谁知道如何使用Java以编程方式获取Android设备系统日志?这与Dalvik Debug Monitor下面板上的内容类似。

提前致谢。

2 个答案:

答案 0 :(得分:3)

未经测试'adb shell logcat',但我用它来通过adb获取其他内容:

public static String[] getAdbLogCat() {

    try {
        Process p = Runtime.getRuntime().exec("/path/to/adb shell logcat");
        InputStream is = p.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        final StringBuffer output = new StringBuffer();
        String line;
        ArrayList<String> arrList = new ArrayList<String>();
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        return (String[])arrList.toArray(new String[0]);
    } catch (IOException e) {
        System.err.println(e);
        e.printStackTrace();
        return new String[]{};
    }
}

答案 1 :(得分:0)

我从上面的Mathias Conradt的回答开始。它对我不起作用,但是在使用了很长时间后,我发现需要进行哪些调整才能使其正常工作。这将起作用。它不需要root访问权限,特殊权限或其他任何条件。

private static String getAdbLogCat()
{
    String log = "";
    String str;
    try
    {
        String myStringArray[]= {"logcat", "-d"};
        Process process = Runtime.getRuntime().exec(myStringArray);
        InputStream is = process.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        str = br.readLine();
        while (str != null)
        {
            log += str;
            str = br.readLine();
        }
    }
    catch (IOException e)
    {
    }
    return log;
}