解析活动日志文件

时间:2010-10-18 02:08:26

标签: parsing logging

寻找一些帮助,开始我已经有一段时间在我脑海里浮现的一个小项目。

我的日志文件大小不一,取决于它们从50-500MB清除的频率。我想编写一个程序来监视日志文件,同时它正在被写入。在使用时,它很快就会被改变几百行每秒一次。大多数(如果不是所有)我在阅读日志/文本文件时看到的例子都只是打开并将文件内容读入变量,这在每次文件在这种情况下发生变化时都不可行。我没有找到一种语言来写这个,但它在一个Windows框中,我可以工作.net flavors / java /或php(嘿,不要认为PHP将飞得很好),并可能混淆另一个语言,如果有人建议为处理这个问题而建立的东西。

基本上我相信我正在寻找的内容可能更好地描述为监视文本文件以进行更改并查看这些更改的高速方式。每行写的都比较小。 (少于300个字符,因此每行不是大数据。)

编辑:改变措辞,希望更好地描述我正在尝试做的事情。编写一个程序来监视触发器的日志文件然后将以下操作与该触发器匹配。所以我的问题是关于编程语言中的文件处理。

我非常感谢任何想法/评论。

3 个答案:

答案 0 :(得分:0)

如果它是增量的,那么您可以在第一次开始分析日志时读取整个文件,然后将当前大小保持为 n 。下次检查时(可能是检查上次修改日期的定时操作)只需跳过第一个 n 字节,读取所有新字节并更新大小。

否则你可以使用tail -f来获取它的标准输出并将其用于你的目的..

答案 1 :(得分:0)

“密切关注日志文件”是您所描述的内容的一部分tail

如果您计划在Java中实现它,可以检查以下问题:Java IO implementation of unix/linux "tail -f"并将触发逻辑添加到读取的行中。

答案 2 :(得分:0)

我建议不要重新发明轮子。 尝试使用elastic.co

enter image description here

所有这些应用程序都是开源的,免费的,能够监控(一起)并根据输入触发操作。

  • filebeats - 将逐行读取日志文件(也支持多行日志消息)并将其发送到logstash。您可以使用大量其他托运人。
  • logstash - 将获取日志消息,过滤它们,添加标签并将消息发送到elasticsearch
  • elasticsearch - 将记录日志消息并将其编入索引,存储起来。它还能够根据输入运行操作
  • kibana - 是一个用户友好的Web界面,用于查询和分析数据。或者只是简单地将其放在仪表板上。

    希望这有帮助。