我有这样的日志格式:
[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,其中将包含该用户完成的请求的符号链接(symbolic link)。
第一个问题:这个结构是否正确?在我看来,它可以轻松快速地访问日志。之所以要用目录和文件,是因为我喜欢unix的做法,也试了一下(自己感受一下它的优缺点)
第二个问题:我使用 ruby 来创建它没有问题。但是我想学习一些更适合这个的新工具。我正在考虑只使用 unix 工具(pipe、awk 等)来实现这一点,或者在我正在学习的 golang 中编写解析器(甚至有时间实现简单的 map reduce)。 什么工具最适合这个?
最佳答案
我不会将日志存储在目录中以查看用户的行为。
根据您想要跟踪的行为,您可以使用不同的工具。其中之一可能是 mixpanel或 keen.io .
不是在日志文件中记录用户所做的事情,而是向其中任何一个发送一个事件(它们非常相似,选择你认为有更好文档/库的那个),然后你将绘制这些事件以更好地理解你的用户的行为。我最近经常这样做,以一种很好的方式显示数据,我使用了 rickshaw .
我建议这样做的关键点是,如果您采用文件路径,您仍然必须找到一种方法来理解您的数据,而图表将在这方面对您有很大帮助。此外,可视化是 keen.io 默认执行的操作,您可能仍想绘制图表,但这是一个好的开始。
希望这对您有所帮助。
关于linux - 自定义日志处理/解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17882533/