SDCard上的Logcat输出

时间:2012-10-02 07:44:50

标签: android logcat

我正在寻找一种方法来保存手机内存/ SD卡中的所有logcat输出(按标签过滤)。 因此,即使正在玩app的人会来找我并说它崩溃,或者它没有按预期工作,我可以查看日志。我目前正在使用RemoteLogs,但他们没有处理标准的logcat输出。

2 个答案:

答案 0 :(得分:2)

我认为这不是直接可能的。你可以做什么来覆盖像这样的标准Log.x()方法

class MyLog {
  boolean sdLog = false;

  public void d(String arg1, String arg2) {
    if (sdLog) {
       someLogFile.append(arg1).append(":").append(arg2);
    }
    else {
       Log.d(arg1,arg2);
    }
  }
}

然后在您的代码中,通过调用Log.d()替换对MyLog.d()的所有来电。然后用户可以例如在首选项中选择登录SD卡或使用标准机制。

Android通常不会将所有内容记录到SD卡上(因为这将意味着对卡的大量写入,这会缩短其使用寿命。

答案 1 :(得分:0)

您只需转储logcat并通过执行sh -c logcat -d -v time > /sdcard/logcat.txt之类的操作将其保存到文件中。事实上,市场/ Play商店中的应用程序就是这样,允许您通过电子邮件等共享logcat。指示用户使用其中一个应用程序(例如{{3})可能是个好主意。 })发送日志。更好的想法是使用ACRA或BugSense监控应用程序崩溃以及环境信息(Android版本,屏幕大小等)。

请记住,自从Jelly Bean(4.1)在设备上运行时,您只能访问自己的logcat输出(即,从执行的应用程序包中)(通过adb运行具有更多权限并且可以获取所有日志,如之前)。

另一个想法是不使用Log.x(),而是写入您自己的日志文件。最近的ACRA版本能够发送此文件的内容以及崩溃报告。