module CliApplication::Log
¶ ↑
В ходе эксплуатации библиотеки мне пришлось столкнуться с некоторыми проблемами, которые не сразу были диагностированы. Например, в ходе выполнения скрипта, через полгода, случайно выяснялось, что скрипт последний месяц работал с ошибкой. Подобных ситуаций может быть две:
-
Cкрипт был отлажен под девелоперским профилем, записаны логи, затем скрипт помещен в cron. После этого, при запуске из под крона, возникала ошибка записи лога (из-под крона другие права), которая не выводилась в консоль. Как следствие - под кроном скрипт не работет, а причина неизвестна.
-
В ходе исполнения скрипта возникали не предусмотренные на этапе отладки исключительные ситуации, и скрипт прекращал работать. Если не озаботиться выводом диагностических сообщений, например, в почту, то об этой ситуации можно было долго не узнать.
Поэтому в CliApplication
добавляются функции логгирования работы приложения. Практика показывет, что полные логи никто не изучает (трудоемко), поэтому логгирование осуществляется только для последнего запуска скрипта.
При этом, функции логгирования делают следующее: 1. Уже на этапе девелопмента предупреждают о ситуации, если запись лог-файлов будет ограничена по причине прав. Это дает гарантию того, что при запуске из под крона данные будут гарантированно записываться в файл. 2. Записывают информацию о старте приложения. Если есть блок старта приложения, и ничего больше - где-то произошел “вылет” приложения. 3. Дает возможность записи пользовательских сообщений (например, для отладки или контроля исполнения) 4. Пишет финальную часть - время исполнения, результат, занятую память.
Помимо файла, запись также возможна в базу данных, что дает возможность удаленно мониторить исполнение скриптов
Настройка логгирования¶ ↑
Для настройки логгирования необходимо создать секцию cli/log в конфигурационном файле. Формат секции определяется значением type. Например:
cli: log: type: none
cli: log: type: file location: <folder>
cli: log: type: database database: <имя секции cli/database>