Короткая заметка о мониторинге логов в реальном времени и вызову файлов по маске.
В некоторых ситуациях приходится достаточно часто обращаться к логам каких-то модулей. Из x-ray это не всегда бывает удобно, лучше из командной строки, тем более команда tail с ключом -f позволяет выводить лог в реальном времени. Вот так и мне во время отладки системы Noolite пришлось поковыряться в логах одноименного модуля, лог файл которого создается каждые сутки новый и в имени которого присутствует текущая дата. Вызов такого файла с выводом в консоль в реальном времени будет выглядеть так:
tail -f /var/www/cms/debmes/2019-04-22_noolite.log
При чем, если запустить в виде tail -F, то при наступлении следующих суток, по идее должен подхватиться следующий файл.
Но мы сутками мониторить не собираемся и чтобы каждый раз не вписывать точную дату в команду вывода лог файла, можно делать вызов по маске таймштампа:
tail -f /var/www/cms/debmes/$(date "+%Y-%m-%d")_noolite.log
Чтобы выводить в реальном времени определённые строки логов, например, для отслеживания работы датчика движения, привязанного к определённому каналу можно использовать grep, получится:
tail -f /var/www/cms/debmes/$(date "+%Y-%m-%d")_noolite.log | grep "cell=44"
, где 44 это номер канала.
если добавить в конце строки "> имя_файла.txt" , то выборка лога будет выводиться вместо консоли в текстовый файл:
tail -f /var/www/cms/debmes/$(date "+%Y-%m-%d")_noolite.log | grep "cell=44" > file_name.txt
">>" вместо ">" позволяет дописывать в конец файла, не затирая его.
Если в конце строки добавить "&", то это освободит консоль, а выполнение задачи уйдет в фон, выведя в консоль id процесса. Завершить задачу можно через kill.
Кроме tail существуют и другие более продвинутые утилиты, например, lnav позволяет мониторить сразу несколько логов, подсвечивает вывод и имеет множество других возможностей.
Что бы не запоминать пути к логам и синтаксис маски таймштампа, можно единожды всё это заскриптить и вызывать простой командой без указания пути. Для этого создадим файл noolog в директории /usr/local/bin
sudo nano /usr/local/bin/noolog
вписываем в него 2 строки:
#!/bin/bash
tail -f /var/www/cms/debmes/$(date "+%Y-%m-%d")_noolite.log
Сохраняем файл:
ctrl+X; Y
делаем файл исполняемым:
sudo chmod +x /usr/local/bin/noolog
Всё! Теперь в любой момент набираем в консоли "noolog" и мониторим актуальный лог модуля noolite.