Обробка двох файлів журналу


14

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

В даний час я роблю щось подібне

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

Це виводить щось на консоль кожного разу, коли в додатку виконується SQL. Але я повинен запустити код у двох окремих сеансах SSH. Однак те, що я хочу, щоб мати можливість видалити обидва файли за один і той же сеанс SSH. Чи можливо це?

Відповіді:


20

Так, хвостові рядки виводить файли, додані до всіх файлів у командному рядку:

tail -F sqlLogs.log perflogs.log | egrep '(sql-time|exec-time)'

Ну, це простіше, ніж мій шлях! (хай, щойно схвалив відповідь, яка не моя, я залишу свою заради цікавості)
Джеремі

4

Погляньте на MultiTail . Це твій друг.

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

 - різні вікна, "розкол" al vim
 - або об'єднати два (або 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 для мультиплексування виводу в одну трубу

створіть фіфо-трубу, хвостові n файли до труби, потім переведіть трубку

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

коли закінчите

 rm pipeName

1
Це фактично не використовує фіфо; ви, мабуть, хочете, щоб були хвостові команди tail fileN >> pipeName.
Джеремі Керр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.