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