Хвост два файла журнала

14

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

В настоящее время я делаю что-то вроде этого

tail -f sqlLogs.log | grep sql-time
tail -f perflogs.log | grep exec-time

Это выводит что-то на консоль каждый раз, когда в приложении выполняется SQL. Но я должен запустить код в двух отдельных сессиях SSH. Тем не менее, я хочу иметь возможность подключать оба файла в одном сеансе SSH. Это возможно?

Codemwnci
источник

Ответы:

20

Да, строки вывода хвоста добавляются ко всем файлам, указанным в командной строке:

tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'
Риккардо Мурри
источник
Ну, это проще, чем я! (LOL, только что проголосовал за ответ, который не мой, я оставлю свой ради любопытства)
Джереми
4

Посмотрите на MultiTail . Это твой друг.

Вы можете иметь несколько хвостов журнала в

 - разные окна, разделение Аль Вима
 - или объединить два (или N) потока в одно представление и
 - вы можете фильтровать пары по регулярному выражению и, если хотите,
 - это будет 'tee' вывод в файл

http://www.vanheusden.com/multitail/

На Ubuntu 10.04: sudo apt-get install multitail

Майк Дин
источник
2

Да, используя screenкоманду, вы можете запустить 2 сеанса bash на одном терминале.

  • Беги, screenчтобы начать,
  • Затем введите Ctrl-aзатем S(Примечание: капитальное S) , чтобы разделить экран на 2.
  • Ctrl-aзатем Tabпереместит вас между двумя сессиями.
  • Ctrl-aзатем cзапустит оболочку в этом новом регионе.

(Пожалуйста, ознакомьтесь с ответом Риккардо, прежде чем использовать его, он намного проще, я оставлю это, поскольку он может быть полезен для людей с похожими, но разными проблемами).

Джереми
источник
0

Вы можете использовать mkfifo для мультиплексирования вывода на один канал

создайте трубу fifo, подключите n файлов к трубе, затем cat the pipe

 mkfifo pipeName
 tail file1 &
 tail file2 &
 ...
 tail fileN &
 cat pipeName

когда закончено

 rm pipeName
dvhh
источник
1
Это на самом деле не использует fifo; Вы, вероятно, хотите, чтобы хвостовые команды были tail fileN >> pipeName.
Джереми Керр