我最近安装了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进行拾取,因此您丢失的样本不会超过几个。