Как я могу просматривать файлы журналов в Linux и применять пользовательские фильтры при просмотре? - PullRequest
42 голосов
/ 26 февраля 2010

Мне нужно прочитать несколько гигантских файлов журналов в системе Linux. В журналах много беспорядка. На данный момент я делаю что-то вроде этого:

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

Но это громоздко - каждый раз, когда я хочу добавить другой фильтр, мне нужно выходить less и редактировать командную строку. Некоторые фильтры относительно сложны и могут быть многострочными.

Мне бы хотелось как-то применить фильтры, когда я читаю журнал, и способ где-нибудь сохранить эти фильтры.

Есть ли инструмент, который может сделать это для меня? Я не могу установить новое программное обеспечение, поэтому надеюсь, что оно уже установлено, например, less, vi, что-то в Python или Perl lib и т. Д.

Изменение кода, который генерирует журнал, чтобы генерировать меньше, не вариант.

Ответы [ 5 ]

104 голосов
/ 04 июля 2012

Используйте команду &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.
4 голосов
/ 26 февраля 2010

Попробуйте инструмент multitail - помимо того, что вы можете просматривать несколько журналов одновременно, я уверен, что он позволяет применять фильтры регулярных выражений в интерактивном режиме.

4 голосов
/ 26 февраля 2010

Основываясь на ответе ghostdog74 и справочной странице less, я придумал следующее:

~/.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 - посмотреть журнал без фильтрации

Пока этого достаточно, но я все же хотел бы иметь возможность редактировать фильтры на лету.

0 голосов
/ 09 декабря 2015

Casstor Software Solutions предлагает приложение LogFilter (www.casstor.com), которое может редактировать текстовые файлы Windows / Mac / Linux и легко выполнять фильтрацию файлов. Он поддерживает несколько фильтров, а также регулярные выражения. Я думаю, что это может быть то, что вы ищете.

0 голосов
/ 26 февраля 2010

см. справочную страницу меньше. Есть несколько опций, которые вы можете использовать, например, для поиска слов. Он также имеет режим редактирования строки.

...