自定义日志处理/解析

我有这样的日志格式:


[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 工具(pipe、awk 等)来实现这一点,或者在我现在正在学习的 golang 中编写解析器(甚至有时间实现简单的 map reduce)。什么工具最适合这个?


慕丝7291255
浏览 222回答 2
2回答

ITMISS

这个结构正确吗?只有您自己知道,这直接取决于需要如何访问和使用数据。什么工具最适合这个?您可能可以使用 UNIX 工具来实现这一点,但通过编写此内容来练习您的 Go 技能也可能是一个很好的练习。它也将更具可扩展性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go