![用于从 2 个日期之间的任意日志文件集中转储条目的工具](https://linux22.com/image/21221/%E7%94%A8%E4%BA%8E%E4%BB%8E%202%20%E4%B8%AA%E6%97%A5%E6%9C%9F%E4%B9%8B%E9%97%B4%E7%9A%84%E4%BB%BB%E6%84%8F%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E9%9B%86%E4%B8%AD%E8%BD%AC%E5%82%A8%E6%9D%A1%E7%9B%AE%E7%9A%84%E5%B7%A5%E5%85%B7.png)
几天前,我发生了一次中断事件,支持团队要求提供该期间的任何可用日志,在考虑如何执行此操作时,我想到能够解析许多日志文件通常会很方便一次用于 2 个日期之间的条目。
我看到许多工具可以使这成为可能,如果我们有远见来配置它们,尤其是;
splunk
、syslog-ng
、rsyslog
和其他将日志存储到某些可搜索后端(例如 mysql)的内容。
(我肯定计划安装一个中央日志主机来满足这个要求)
然而,短期内我对一个工具感兴趣,它可以遍历/var/log/*
文件夹并转储到标准输出,最好使用简单的选项语法(查找选项很好+mtime等)并用可以快速完成此操作的东西编写(所以可能是C而不是 Perl 或 ruby)
我看到了一堆我正在寻找的工具,它们可能适合也可能不适合目的,例如 ,,,,mergelog
但没有一个真正跳出来明显适合于此,这很奇怪,因为我希望这是这样的在 UNIX 工具上完成的事情。logpp
sec
答案1
使用:
find ... -mtime [fromdate] -a -not -ctime [todate]
查找之后修改
[fromdate]
和之前创建的所有文件[todate]
对于找到的文件,发明一种创造性的模式来提取感兴趣的行。使用
egrep
/awk
因为它们比 perl/python 快得多。例子:awk '/^2012-01-(01|02|03)/'
将打印 2012 年 1 月第一、第二和第三天的所有行。
以上是2分钟的编写和运行。如果性能确实是一个问题,那么继续尝试寻找更复杂的东西。