0

我有这样的日志格式:

[26830431.7966868][4][0.013590574264526367][30398][api][1374829886.320353][init] 
  GET /foo
  {"controller"=>"foo", "action"=>"index"}

[26830431.7966868][666][2.1876697540283203][30398][api][1374829888.4944339][request_end] 
  200 OK

条目是使用这样的模式收缩的:

[request_id][user_id][time_from_request_started][process_id][app][timestamp][tagline]
  payload

在请求期间,我有很多地方可以记录一些东西 - 应用程序基本上具有复杂的行为。这有助于我调试很多用户行为。

我想解析它的方式是我想让目录结构像这样:

req_id
  |
  |----[time_from_request_started][process_id][timestamp][tagline]
  |
  etc

基本上每个目录都有基于 req_id 的名称,其中的文件名称是标语的其余部分。这些文件将包括有效载荷。

而且我还会有其他目录,带有用户 ID,其中将包含该用户完成的请求的符号链接。

第一个问题:这个结构正确吗?在我看来,它将使快速访问日志变得容易。我想使用目录和文件的原因是我喜欢unix方法,并尝试它(自己感受它的缺点和优点)

第二个问题:我可以毫无问题地使用 ruby​​ 来创建它。但我想学习一些更适合这个的新工具。我正在考虑只使用 unix 工具(管道、awk 等)来实现这一点,或者用我现在正在学习的 golang 编写解析器(甚至有时间实现简单的 map reduce)。什么工具最适合这个?

4

2 回答 2

1

我不会将日志存储在目录中以查看用户的行为方式。

根据您想要跟踪的行为,您可以使用不同的工具。其中之一可能是mixpanel热衷于.io

与其在日志文件中记录用户所做的事情,不如向其中任何一个发送事件(它们非常相似,选择您认为具有更好 docs/lib 的那个),然后您将绘制这些事件以更好地理解你的用户。我最近做了很多,以一种很好的方式显示数据,我使用了rickshaw

我建议这样做的关键点是,如果您采用文件路径,您仍然必须找到一种方法来理解您的数据,而图表将在这方面对您有很大帮助。另外,可视化是默认的。

希望这有帮助。

于 2013-07-26T13:35:43.203 回答
0

Is this structure correct?

Only you can know that, it depends directly on how the data needs be accessed and used.

What tool is best suited for this?

You could probably use UNIX tools to achieve this but it may as well be a good exercise to practice your Go skills by writing this. It would also be more extensible.

于 2013-07-26T13:37:45.653 回答