3

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

4

2 回答 2

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 卡,因为这意味着对卡进行大量写入,这会缩短其使用寿命。

于 2012-10-02T07:53:16.747 回答
0

您可以简单地转储 logcat 并通过执行类似sh -c logcat -d -v time > /sdcard/logcat.txt. 事实上,Market/Play 商店中有一些应用程序可以做到这一点,并允许您通过电子邮件等方式共享 logcat。指导您的用户使用其中一个应用程序(例如LogCollector)发送可能是个好主意你的日志。一个更好的主意是使用 ACRA 或 BugSense 来监控应用程序崩溃以及环境信息(Android 版本、屏幕大小等)。

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

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

于 2012-10-02T08:06:55.653 回答