保持3天的日志 - Android

时间:2016-10-21 19:04:24

标签: android file logging

我的应用中有位置服务。出于调试目的,我想记录(到文本文件)一些事件,如“新坐标”,“服务onDestroy”,“服务onStartCommand”,“坐标发送到后端”,等等。 但我面临着一个问题。日志文件每天获得350多条新行..所以..在3天内我有一个1000行的文件 我的想法是在最后几天只维护3(或在这种情况下为N)并删除3天前写的内容。

但是:

  • 如果要删除旧行,我不想检查每次写入
  • 我不想设置每3天触发一次的警报来清除旧数据。

如果您知道处理这种情况的另一种有效方法,请告诉我吗?

1 个答案:

答案 0 :(得分:2)

如果没有索引到文本文件的方法,如果不读取文件的每一行(直到某个点),解析它并找到日期,就没有办法解决它。

不要保留文件。保留一个数据库。将其中一列设为“创建时间”。然后,您可以轻松删除创建时间早于某个阈值的行。

    getContentResolver().delete(
      yourUri, 
      "created_time < ?", 
      new String[] { System.currentTimeIllis() - Integer.toString(TimeUnit.DAYS.toMillis(3)
    );

(或者其他东西,请测试你自己的SQL ......)

作为旁注,1000行文本文件不算什么。除非你经常这样做,否则阅读和解析它并不重要。如果您每天读取并修剪1x文件,没问题。

另一个解决方案是旋转文件(log - &gt; log.1,log.1 - &gt; log.2,...,log.n-1 ---&gt; log.n) 。这当然不会对任何特定文件的大小设置硬性限制。