挖掘巨大的 gzip 日志文件

挖掘巨大的 gzip 日志文件

有时我需要挖掘巨大的日志文件(解压后有几个 GB)来调试特定的错误。

现在,vim 可以浏览文件,但是当我需要在文件中查找某些内容时,它完全没用。是否有某种工具可以索引日志并允许我更快地搜索文件?

最好是命令行工具。

编辑:只是为了澄清,像ack或 之类的工具grep不合适,因为我需要检查匹配的上下文,并且-C, -A,-B只是不够好。另外ackgrep仍然慢得无法使用。

答案1

有一些非常好的日志索引器,它们比命令行工具级别要大一些。商业上,斯普伦克是个大的,很难被击败。格雷日志2是一个很好的开源实现。 Elasticsearch+Logstash 也相当不错。

设置它们来收集和运行收集服务器都会产生相当大的开销,但是一旦您将中央日志收集作为系统的一部分,它们就很棒了。从多个来源查询和报告日志是多层应用程序的最大好处。

至于命令行,如果您可以将日志记录插入 syslog,系统 日志实现允许在 a 上建立索引字段数当项目被记录时。不确定这在文本处理中是否有用,但对于元数据来说更有用。

不确定是否有任何临时命令行工具,每次加载文件时它们仍然会产生提取/加载/解析时间损失。

话虽如此,less我在单个日志文件中完成了大部分需要的工作。

&pattern  grep pattern
/pattern  search forward
?pattern  search backward
shift-f   tail -f

tail模式也可以考虑之前的模式,这对于观看实时日志非常有用

答案2

搜索文件less可能是一种选择。它不需要文件适合内存。而且它比 vim 快得多(即使使用 LargeFile 插件)。

缺点是:grep从性能的角度来看,它可能不会被击败。如果文件大小接近 RAM 大小,大多数替代方案都会出现问题。

相关内容