我和another post中描述的人有同样的问题。我的应用程序的日志文件很大(~1GB),而grep用于关联日志文件中的信息非常繁琐。现在我使用''less''工具,但它也比我想要的慢。
我正在考虑加快搜索速度。有以下几种方法:首先,用XML生成日志并使用一些XML搜索工具。我不确定使用XML搜索会获得多少加速(我猜不多,因为非索引文件搜索仍需要很长时间)。
其次,使用XML database。这会更好,但我在这里没有太多背景。
第三,使用(非XML)数据库。这有点单调乏味,因为必须编写表模式(上面的第二个选项也可以完成吗?)。我还预见到一开始会改变很多模式以包含常见用例。理想情况下,我希望比完整的数据库更轻松地存储日志。
第四,使用lucene。它似乎符合目的,但有一种简单的方法来指定当前用例的索引吗?例如,我想在每次看到'迭代'这个词的时候说“索引”。 你有什么看法?答案 0 :(得分:8)
问题是使用XML会使您的日志文件更大 我建议按日期或行分割日志文件 否则使用基于文件的数据库引擎,例如sqlite
答案 1 :(得分:6)
一个千兆字节不是那个很大,真的。你试图用这些日志文件做什么样的“关联”?我经常发现编写一个自定义程序(或脚本)以特定方式处理日志文件比尝试创建一个数据库模式来处理你想要用它做的所有事情更简单。当然,如果您的日志文件由于某种原因难以解析,那么尝试修复该方面可能是值得的。
(顺便说一句,我同意kuoson - XML几乎肯定不是的方式。)
答案 2 :(得分:1)
如果您可以在Windows上查看日志,或使用Wine, LogParser 是一个很好的工具,可以从日志中挖掘数据,它实际上允许您运行SQL查询在任何日志上,无需更改任何代码或日志格式,甚至可以用于生成快速HTML或Excel报告。
也就是几年前,当XML在炒作中我使用XML日志和XSLT样式表来生成视图时,它实际上有点不错,但是它使用了很多内存,它会阻塞大文件,所以你可能不想使用XML。
答案 3 :(得分:1)
处理日志文件的麻烦在于每个文件必须单独查询,如果您可以创建日志文件的索引并搜索/查询,则会得到更清晰的响应。 Lucene将成为我的下一个停靠港,然后是solr。
答案 4 :(得分:0)
也许您可以将日志加载到Emacs(假设您有足够的内存)并使用各种Emacs功能,例如增量搜索和Alt-X。
免责声明:我没有在文件上试过这个> 100MB。