如何在Linux中查看日志文件并在查看时应用自定义过滤器?

时间:2010-02-26 00:53:22

标签: linux filter logfiles

我需要阅读Linux系统上的一些巨大的日志文件。日志中有很多混乱。目前我正在做这样的事情:

cat logfile.txt | grep -v "IgnoreThis\|IgnoreThat" | less

但它很麻烦 - 每次我想添加另一个过滤器时,我都需要退出less并编辑命令行。有些滤波器相对复杂,可能是多线的。

在我阅读日志时,我想要一些方法来应用过滤器,以及在某处保存这些过滤器的方法。

有没有可以为我做这个的工具?我无法安装新软件,所以希望它已经安装好了 - 例如,更少,vi,Python或Perl lib等等。

更改生成日志以生成更少的代码不是一种选择。

5 个答案:

答案 0 :(得分:104)

在less。中使用&pattern命令。

从简化的手册页

  

&安培;图案

          Display  only  lines which match the pattern; lines which do not
          match the pattern are not displayed.  If pattern  is  empty  (if
          you  type  &  immediately  followed  by ENTER), any filtering is
          turned off, and all lines are displayed.  While filtering is  in
          effect,  an  ampersand  is  displayed  at  the  beginning of the
          prompt, as a reminder that some lines in the file may be hidden.

          Certain characters are special as in the / command:

          ^N or !
                 Display only lines which do NOT match the pattern.

          ^R     Don't interpret regular expression  metacharacters;  that
                 is, do a simple textual comparison.

答案 1 :(得分:4)

尝试multitail工具 - 同时让您一次查看多个日志,我很确定它可以让您以交互方式应用正则表达式过滤器。

答案 2 :(得分:4)

根据ghostdog74's answerless联机帮助页,我想出了这个:

~/.bashrc

export LESSOPEN='|~/less-filter.sh %s'
export LESS=-R  # to allow ANSI colors

~/less-filter.sh

#!/bin/sh
case "$1" in
*logfile*.log*) ~/less-filter.sed < $1
  ;;
esac

~/less-filter.sed

/deleteLinesLikeThis/d  # to filter out lines
s/this/that/  # to change text on lines (useful to colorize using ANSI escapes)

然后:

  • less logfileFooBar.log.1 - 自动应用过滤器。
  • cat logfileFooBar.log.1 | less - 查看未经过滤的日志

现在这已足够,但我仍然希望能够动态编辑过滤器。

答案 3 :(得分:0)

请参阅较少的man page。例如,您可以使用一些选项来搜索单词。它也有行编辑模式。

答案 4 :(得分:0)

Casstor Software Solutions的一个名为LogFilter(www.casstor.com)的应用程序可以编辑Windows / Mac / Linux文本文件,并且可以轻松执行文件过滤。它支持多个过滤器以及正则表达式。我认为这可能是你正在寻找的东西。