Всем привет! В данной записи я хотел бы поделиться с вами модулем который я разработал для Laravel.
https://github.com/prog-time/tg-logger
Это мой первый опыт в разработке публичных модулей для Laravel, поэтому прошу не судить строго!
Данный модуль позволяет легко и быстро настроить отправку логов и сообщений об ошибках в Telegram сообщество, где под каждый тип события вы можете выбрать отдельный топик. Таким образом вы можете отправлять сообщения о кастомных событиях, исключения и системные ошибки.
Конечно, есть более продвинутые решения для логирования, но они требуют более глубокую настройку. Я же хотел создать модуль, который будет быстро настраиваться и хорошо подойдёт для мелких и средних проектов.
Настройка модуля
Для начала вам нужно создать Telegram бота который будет отвечать за отправку оповещений. После этого создаём группу, включаем в ней «Темы» и добавляем созданного бота в группу (обязательно с правами администратора).
Скрытый текст
О создание бота вы можете почитать тут — https://prog-time.ru/course/bot-v-telegram-2/
Для получения ID сообщества вам необходимо добавить бота @myidbotв группу и отправить команду /getgroupid
в чат.
После создания бота, записываем токен бота и id группы в .env файл.
TG_LOGGER_TOKEN="token_bot" TG_LOGGER_CHAT_ID="id_group"
Устанавливаем модуль через Composer.
composer require prog-time/tg-logger
После установки модуля, вам необходимо создать конфигурационный файл config/tg-logger.php и прописать в нём параметры для работы модуля.
Вы можете создать файл вручную или перенести заготовленную версию конфигурации, которая находится внутри модуля, прописал следующую команду.
php artisan vendor:publish --tag=config
Теперь давайте заполним созданный конфигурационный файл.
<?php return [ 'token' => env('TG_LOGGER_TOKEN'), 'chat_id' => env('TG_LOGGER_CHAT_ID'), 'topics' => [ [ 'name' => 'Debug messages', 'icon_color' => '9367192', 'level' => 'debug', ], [ 'name' => 'Cron tasks', 'icon_color' => '9367192', 'level' => 'crone', ], [ 'name' => 'Errors', 'icon_color' => '9367192', 'level' => 'error, notice, warning, emergency', ] ] ];
Конфигурация tg-logger.php включает в себя следующие параметры:
-
token — токен Telegram бота
-
chat_id — id группы куда мы будет отправлять логи
-
topics — здесь указываем названия тем, типы логов которые будет принимать тема и цвета иконок тем.
После настройки tg-logger.php, вам необходимо запустить команду которая создаст темы в группе.
php artisan tglogger:create-topics
*После запуска данной команды, файл tg-logger.php будет перезаписан и в нём будут указаны id тем
На этом настройка модуля закончена, ниже рассмотрим как работать с модулем TgLogger.
Работа с модулем TgLogger
Отлов системных ошибок
Для отлова всех типов ошибок вам необходимо изменить базовый обработчик логов в конфигурационном файле config/logging.php, указав в качестве обработчиков классы модуля.
'channels' => [ ... 'telegram' => [ 'driver' => 'monolog', 'handler' => ProgTime\TgLogger\TgHandler::class, 'formatter' => ProgTime\TgLogger\TgFormatter::class, 'level' => 'debug', ], ... ],
И в .env изменить параметр LOG_CHANNEL
LOG_CHANNEL=telegram
Отправка сообщений через класс TgLogger
Вы также можете отправлять оповещения, напрямую, используя класс TgLogger и статический метод sendLog().
TgLogger::sendLog('Your message', 'level');
Большое спасибо тем кто дочитать данную статью до конца! Буду очень рад если вы поддержите данное решение на GitHub и напишете свой комментарий под данным постом.
ссылка на оригинал статьи https://habr.com/ru/articles/869684/
Добавить комментарий