Android应用程序是否可以查看自己的日志文件?

时间:2012-01-27 05:34:22

标签: android logging

我尝试在我的Android设备上使用LogCat(使用Android 1.5,不,不可能更新它,不管怎样),并发现它只跟踪在运行时发生的日志事件。

应用程序是否可以跟踪在运行时记录的所有事件并将其保存到文件中? (即使不是自己触发的那些)

2 个答案:

答案 0 :(得分:0)

创建一个可以写入的数据库和IntentService。

只要任何组件想要记录任何内容,就使用Intent启动此服务。

我错过了什么吗?

答案 1 :(得分:0)

事实证明,this tutorial描述了一种将系统日志副本转储到StringBuilder对象的方法。

从教程中复制的代码:

public class LogTest extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        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);
            }
            TextView tv = (TextView)findViewById(R.id.textView1);
            tv.setText(log.toString());
        } catch (IOException e) { }
    }
}

请注意,您需要包含阅读日志的权限:
<uses-permission android:name="android.permission.READ_LOGS" />

代码的重要部分是Runtime.getRuntime().exec("logcat -d")部分。 -d开关是抛出当前日志并退出的部分。如果我正确地读取documentation,理论上,保持logcat正在运行,将该日志的连续行转储到它们出现的stdout时。 p>