Делаем вывод журнала более читаемым в терминале

378
baelx

В настоящее время я работаю с Wordpress и наблюдаю за его файлом debug.log, который обновляется при каждой перезагрузке страницы. Если есть ошибка, он добавит эти строки в файл debug.log при обновлении. Три основные возможности: вывод 0 строк (без ошибок), 1 строки (1 ошибка) или нескольких строк (несколько ошибок).

В настоящее время я пытался использовать tail -f и / или less + F в качестве пейджеров, чтобы отслеживать новые ошибки при перезагрузке страницы. Моя проблема в том, что я хочу сделать вывод более читаемым. В настоящее время каждая из этих команд просто добавляет дополнительные строки журнала в существующий список. На самом деле нет различий между строками, кроме отметки времени на каждой.

Мне бы хотелось, чтобы можно было четко и быстро увидеть, какие строки (если таковые имеются) были сгенерированы последним - т.е. из последнего обновления страницы. Я рассмотрел добавление новых строк / разрывов строк между каждым выводом или способ выделения самых последних строк и т. Д., Но, похоже, не выдает много результатов.

Я открыт для использования других команд, сценариев bash и т. Д. Мне просто нужен способ четко отобразить, какие новые строки есть в конкретном файле журнала (для каждого обновления страницы). Вся помощь приветствуется!

2
когда я делаю PHP-вещи, я смотрю журнал и проверяю его на наличие IP-адреса ... IP-адрес клиента в debug.log? Если это так, `tail -f /path/to/debug.log | grep 10.22.33.44` выделит то, что показывается в журналах, только для ВАШЕГО трафика для целей тестирования. ivanivan 6 лет назад 0
@ivanivan Сейчас это местное развитие, так что в любом случае это только мой собственный трафик. Даже если бы это было не так, это все равно не решило бы проблему: различие между журналами ошибок прошлых загрузок и журналами ошибок текущей перезагрузки. Это больше относится к читабельности журналов, чем когда-либо, и когда все журналы всех обновлений сгруппированы вместе, трудно сказать, какие из них мне нужны, чтобы помочь мне в разработке. baelx 6 лет назад 0
Ах. В этом случае в окне термина, который просматривает журналы с помощью `tail -f`, несколько раз нажмите клавишу ввода. у вас будет каждый клик записей журнала, разделенных пустыми строками. ivanivan 6 лет назад 1
@ivanivan Это гетто, которое я использую сам, но требует вмешательства человека. barrycarter 6 лет назад 0
@ivanivan Спасибо за это предложение. В конечном счете, идеальным решением моей проблемы было бы автоматизировать это. Вы знаете какой-нибудь способ сделать это? baelx 6 лет назад 0
использовать задачу `cron`, чтобы выводить несколько новых строк раз в минуту в файл журнала? ivanivan 6 лет назад 0

1 ответ на вопрос

1
barrycarter

Это экстремальный взлом гетто, и я плохой человек для его публикации:

perl -le 'for(;;)' & tail -s 10 -n 0 -f filename.txt

Как это устроено:

  • Фоновый процесс Perl печатает новую строку на экране каждые 3 секунды
  • Команда tailотображает новые строки по filename.txtмере их появления.

Когда вы закончите, обязательно убейте фоновый perlпроцесс, или он будет продолжать печатать новые строки на экране навсегда.

После первого обновления предложенная вами команда будет отличной, поскольку она не начинается ни с одной из предыдущих строк / выходов. Однако после нескольких обновлений возникает та же самая проблема, связанная с объединением всех операторов журнала. Вы предлагаете мне запускать эту команду каждый раз, когда я обновляюсь? - Может быть, автоматизирован с помощью сценария Bash или каким-либо другим инструментом? Любые другие советы, которые вы могли бы дать, были бы великолепны! baelx 6 лет назад 0
Вы просто хотите новую строку между каждым сообщением журнала, или вы хотите сгруппировать кучу сообщений журнала вместе, а затем иметь новую строку. Если последнее, сколько сообщений журнала вы хотите сгруппировать вместе за один раз? barrycarter 6 лет назад 0
@ fixer1234 Ранее мне говорили, что слишком многие мои комментарии должны быть ответами, поэтому я пообещал начать публиковать больше ответов. Должен ли это был комментарий? Я ожидал чего-то взад-вперед, поскольку, честно говоря, не был уверен, что это что-то такое простое. barrycarter 6 лет назад 0
@barrycarter Теперь я внес некоторые изменения в свой первоначальный вопрос, которые, надеюсь, сделают его более понятным. Таким образом, иногда обновление страницы дает 0 строк файлам журнала, иногда - несколько. Я не могу контролировать, сколько это дает после данного обновления, но я все еще хочу способ ясно определить, какие появились после самого последнего обновления, а какие - из более ранних обновлений. baelx 6 лет назад 0
ОК, отредактированный ответ. barrycarter 6 лет назад 0
Спасибо за ваш ответ, и я подумал об его использовании, но это не так удобно, как хотелось бы. В конечном счете, мне, возможно, нужно использовать инструмент сборки для веб-разработки, который сначала наблюдает за обновлением страницы, а затем переходит к файлу debug.log и затем выводит его. Это в отличие от простого просмотра журнала отладки и попытки найти способ сгруппировать их. Спасибо всем снова baelx 6 лет назад 0

Похожие вопросы