Отправка логов в Telegram. Модуль для Laravel

от автора

Всем привет! В данной записи я хотел бы поделиться с вами модулем который я разработал для 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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *