8

故障排除、分析和过滤日志文件是迄今为止最费力的日常工作之一。我的问题是搜索一个日志文件,该文件的大小可能超过 4 个演出。只需加载文件最多需要 15 分钟。我正在运行一个相当快的处理器,它有 8 个内存。文件加载后,我实际上只能使用 grep 和/或 control+F 来扫描文件。当我试图查看来自多个系统的文件时,情况会变得更糟,每个系统的重量都超过一个演出。曾尝试根据时间戳分离文件以使它们更小,但真的没有乐趣。

是否有一个工具甚至一个过程可以用来减少故障排除的时间(除了通常的“先修复错误”)?

感谢您的意见。

4

4 回答 4

8

你用什么加载它?4 gigs 是一个相当大的文件,但加载到内存中应该不会花那么长时间。

对于这么大的文件,我建议直接使用 grep,如果 grep 不适合你,SED 和 AWK 是你的朋友。如果您想实时执行此操作,请了解如何将这些工具与管道和tail -f.

是的,我知道,SED 一开始很吓人。它也非常强大。学习它。

如果你在窗户上,我很同情你。我可以推荐一个unix shell吗?

如果你害怕命令行工具,可以考虑学习 Perl 或 Python。他们都非常擅长从像这样的大文件中的噪声中分类信号。

于 2010-10-28T02:56:38.823 回答
1

Baretail is a good tool to have. Give it a try. I haven't used it for 4 gigs files but my log files are also quite big and it works just fine. http://www.baremetalsoft.com/baretail/index.php

edit: I did not see that someone has already suggested baretail.

于 2010-10-28T03:15:51.340 回答
1

If you want to exclude lines of things you don't want to see, you can grep -v 'I dont wanna see this' > logWithExcludedLines.log. You can use regex as well grep -vE 'asdf|fdsa' > logWithNoASDForFDSA.log

This method works very well with apache access logs grep -v 'HTTP/1.1 200' > no200s.log (or something like that, don't remember the exact string).

于 2010-10-28T03:20:48.673 回答
0

我目前正在使用 unix 命令行工具 (f)grep、awk、cut、join 等来做这些事情,这些工具也可用于带有cygwinUnxUtils等的 Windows,并且还使用一些Scala脚本来完成更多的事情复杂。您可以编写脚本来执行跨越多个文件中的日志文件条目的搜索。但我也想知道是否有比这更好的东西- 也许将它们导入数据库(都是 SO 问题)?

顺便说一句:将您的硬盘替换为 SSD 驱动器。这些速度更快!此外,将 gzip 压缩的日志留在磁盘上对我来说是值得的,因为在搜索它们时磁盘是瓶颈。例如,如果您在日志文件中搜索正则表达式并希望每次出现 100 行上下文,您可以:

zcat *.log.gz | grep -100 '{regexp}' > {outputfile}

并将输出文件加载到您最喜欢的文本文件查看器中。如果您正在搜索固定字符串,请使用fgrepgrep与附加选项相同-F) - 这要快得多。

于 2010-12-08T17:31:38.073 回答