我有这样的日志格式:
[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)。什么工具最适合这个?