2015-05-05 6 views
0

В любом виде обслуживания наилучшие способы поиска в журналах в следующих случаях:Каковы наилучшие способы поиска в журналах?

1 - Если ошибка уже произошла.
2 - Если ошибка воспроизводится, и вы хотите поймать исключение/ошибку.

Некоторые из способов, которые я знаю, но неэффективный являются:

tail -f production.log => log flows and you have to check manually.
tail -n1000 production.log => log for last 1000 lines
tail -f production.log | grep '500 Internal Server Error' => shows the flow of log for only one particular line that says 500.

Я хочу напечатать на 100 строк выше журнала так, чтобы распечатать трассировку также в обоих случаев (особенно для второго).

ответ

0

Вы можете использовать sed, то есть:

sed '/500 Internal Server Error/!d' sederror.log|sed 10q 

Пояснение:

sed '/500 Internal Server Error/!d' 

Напечатает только строки, соответствующие 500 Internal Server Error

sed 100q 

Отображает первые 100 строк (эмулирует tail -n 100)

4

Надеюсь, я точно понимаю, чего вы хотите.

использование Grep с опцией -B (-B, --Перед-контекст = NUM ​​Печать ЧИСЛО строк ведущего контекста), чтобы сказать, сколько строк для печати перед строкой поиска:

Для нахождения ошибки в все бревно:

grep -B 100 '500 Internal Server Error' production.log 

В случае ошибки в режиме реального времени:

tail -f production.log | grep -B 100 '500 Internal Server Error' 
+0

Привет, это работает, если я должен найдите файл журнала. Что делать, если я воспроизвожу ошибку и во время выполнения я хочу напечатать 100 строк до ошибки? Это также работает в этом случае? – akash

+0

Опять же, надеюсь, что я тебя хорошо знаю. Ты имеешь в виду? 'tail -f production.log | grep -B 100 '500 Внутренняя ошибка сервера' Это сделает эту работу. –