我最近安装了arbtt,它似乎是一个有趣的,基于规则的自动时间跟踪器。 http://arbtt.nomeata.de/#what

我大部分时间都可以使用它,但是在收集统计数据约30分钟后,我遇到了以下错误。

Processing data [=>......................................................................................................................................................................................]   1%
arbtt-stats: Prelude.(!!): index too large

有人对我可以解决此问题或解决问题的方法有任何建议吗?我对用于创建规则的编码语言有0点经验(我相信Haskell)。至此,我所做的只是尽可能地遵循文档。

该错误最终使该工具无用,因为它不会收集超过30分钟的数据。要修复它,我必须删除日志并从头开始。我主要对具有可自定义的基于规则的时间跟踪器的概念感兴趣,但我绝不依赖于使用arbtt。

根据下面的评论,我将在下面提供更多信息。

当我尝试运行arbtt-recover时,出现了一长串看起来像这样的错误。它们似乎都与不受支持的TimeLogEntry有关。
Trying at position 1726098.
Failed to read value at position 1726098:
   Unsupported TimeLogEntry version tag 0

至于配置文件,这是我到目前为止所拥有的。
$idle > 30 ==> tag inactive,

-- A rule that matches on a list of strings
current window $program == ["Chrome", "Firefox"] ==> tag Web,

current window $program == ["skype"]  ==> tag Skype,

current window $program == ["jetbrains-phpstorm"] ==> tag PhpStorm,

( current window $title =~ m!Inbox! ||
  current window $title =~ m!Outlook! ) ==> tag Emails,

( current window $title =~ m!AdWords! ||
  current window $title =~ m!Analytics! ) ==> tag Adwords,

它继续进行下去,但是我非常有信心,对于所有其他行,我都遵循相同的语法。其余各行采用相同的格式,但特定于我的项目/客户。如果需要,我很乐意包含文件的其余部分。

最佳答案

如评论中所述:这是~/.arbtt/capture.log损坏的情况。您通常可以通过以下方式解决此问题

  • 运行arbtt-recover
  • ,然后将~/.arbtt/capture.log.recovered移到~/.arbtt/capture.log

  • 需要执行第二个手动步骤,以避免意外删除太多数据。您可以通过将arbtt-stats传递给--logfile=~/.arbtt/capture.log.recovered来使用它来测试arbtt-recover,从而测试恢复后的文件是否更好。

    例如,当关机不正常或其他原因无法确定时,就会发生数据损坏。但是日志文件格式是这样的,即使在损坏(例如部分写入一个样本)之后,也可以正确写入更多样本,并应通过ojit_code进行拾取,因此您丢失的样本不会超过几个。

    10-07 20:51