【问题标题】:Maintain 3 days log - Android维护 3 天日志 - Android
【发布时间】:2016-10-21 19:04:24
【问题描述】:

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

但是:

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

您能否告诉我您是否知道另一种有效的方法来处理这种情况?

【问题讨论】:

    标签: android file logging


    【解决方案1】:

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

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

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

    (或者别的什么,请自己测试SQL...)

    附带说明,一个 1,000 行的文本文件什么都不是。除非您经常这样做,否则阅读和解析它并不重要。如果您每天阅读和修剪文件 1 次,没问题。

    另一种解决方案是轮换文件(log --> log.1、log.1 --> log.2、...、log.n-1 ---> log.n)。这当然不会对任何特定文件的大小设置硬性限制。

    【讨论】:

    • 哇,最高效最简单的方法!谢谢杰弗里! :)
    猜你喜欢
    • 2021-11-21
    • 2017-01-09
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 2020-07-30
    • 2016-01-30
    • 1970-01-01
    相关资源
    最近更新 更多