5

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

我已经让它大部分工作了,但是在收集统计数据 30 分钟左右后,我最终得到了以下错误。

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

有没有人对我可以解决这个问题的方法有任何建议,或者更好的是,解决它?我对用于创建规则的编码语言有 0 经验(我相信是 Haskell)。到目前为止,我所做的只是尽可能地遵循文档。

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

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

当我尝试运行 arbtt-recover 时,我得到一长串看起来像这样的错误。所有这些似乎都与 Unsupported 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,

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

4

1 回答 1

8

正如评论中所讨论的:这是一个腐败的案例~/.arbtt/capture.log。您通常可以通过以下方式解决此问题

  • 跑步arbtt-recover
  • 然后移动~/.arbtt/capture.log.recovered~/.arbtt/capture.log.

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

例如,当出现不干净的关机或其他未确定的原因时,就会发生数据损坏。但是日志文件格式是这样的,即使在损坏(例如,一个样本的部分写入)之后,更多的样本将被正确写入并且应该被 拾取arbtt-recover,因此您不会丢失超过几个样本。

于 2015-07-29T07:16:27.510 回答