【问题标题】:Printing last 200 lines from Logcat从 Logcat 打印最后 200 行
【发布时间】:2012-07-27 16:50:14
【问题描述】:

我正在尝试在我的应用程序中打印来自 Android Logcat 的最后 200 行左右。 到目前为止,我已经能够使用 InputStreamReader 将 Logcat 放入 BufferedReader。问题是我不知道如何跳到缓冲阅读器的末尾然后向后阅读,或者跳到最后 200 行上方并从那里打印。 我不想在阅读整个日志时使用蛮力方法。我希望有一个更优雅的解决方案。

谢谢。

【问题讨论】:

  • 您能否将 BufferedReader 的内容转换为类似 ArrayList 的内容,然后跳转到 ArrayList.length() - 200,然后循环打印从该点到 ArrayList.length() 的项目?
  • 我可以,但这需要遍历整个缓冲区并将每一行放入数组中
  • “我不想用蛮力的方法阅读整个日志。” .. 我应该首先考虑到这一点,我很抱歉。
  • this question 中接受的答案看来,您可能无法使用 BufferedReader 执行此操作。有没有其他方法可以存储 LogCat?
  • LogCat 只能使用 inputStream 读取。

标签: java android


【解决方案1】:

BufferedReader 不知道行的概念,只知道数据流。如果您连一行都不知道有多长,您将很难找到跳转到(EOF - 200 行)的方法。

我建议在它之后填充一个 RingBuffer,存储 200 行,用最新的替换最旧的。这样 BufferedReader 会继续填充 ringBuffer,然后您就可以使用它来读取。

另一种选择是每 200 行清除一次日志...

【讨论】:

  • 多么酷的数据结构。我以前从未听说过这个,它非常适合这个确切的东西。好主意。
【解决方案2】:

所以这不是我正在寻找的解决方案,而是我想要的。而不是将日志放入 BufferedReader 中,然后将其整理出来并打印出来。我使用 logcat 标签来指定输出文件的大小。

Runtime.getRuntime.exec("logcat -r 160 -f mylog.log")

然后读回文件。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多