我最近安装了 arbtt,它似乎是一个有趣的、基于规则的自动时间跟踪器。 http://arbtt.nomeata.de/#what
我大部分时间都在使用它,但在收集统计数据 30 分钟左右后,我遇到了以下错误。
Processing data [=>......................................................................................................................................................................................] 1%
arbtt-stats: Prelude.(!!): index too large
有没有人对解决此问题或更好地解决它的方法有任何建议?我对用于创建规则的编码语言没有任何经验(我相信是 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
。
第二个手动步骤是为了避免意外删除太多数据。您可以通过将 --logfile=~/.arbtt/capture.log.recovered
使用恢复的文件来测试恢复的文件是否更好,方法是使用 arbtt-stats
.
例如,当出现不正常关机或其他不确定原因时,就会发生数据损坏。但是日志文件格式是这样的,即使在损坏之后(例如,一个样本的部分写入),更多的样本也会被正确写入并且应该被 arbtt-recover
拾取,所以你没有丢失多个样本。
关于linux - Ubuntu 14.04 arbtt-stats 索引大错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31666611/