Backend, Frontend, Weekend
Всем привет! В данной записи я хотел бы поделиться с вами модулем, который я разработал для Laravel.
https://github.com/prog-time/tg-logger
Это мой первый опыт в разработке публичных модулей для Laravel, поэтому прошу не судить строго!
Данный модуль позволяет легко и быстро настроить отправку логов и сообщений об ошибках в Telegram сообщество, где под каждый тип события вы можете выбрать отдельный топик. Таким образом вы можете отправлять сообщения о кастомных событиях, исключения и системные ошибки.
Конечно, есть более продвинутые решения для логирования, но они требуют более глубокую настройку. Я же хотел создать модуль, который будет быстро настраиваться и хорошо подойдёт для мелких и средних проектов.
Для начала вам нужно создать Telegram бота который будет отвечать за отправку оповещений. После этого создаём группу, включаем в ней «Темы» и добавляем созданного бота в группу (обязательно с правами администратора).
После создания бота, записываем токен бота и 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
Теперь давайте заполним созданный конфигурационный файл.
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 включает в себя следующие параметры:
После настройки tg-logger.php, вам необходимо запустить команду которая создаст темы в группе.
php artisan tglogger:create-topics
После запуска данной команды, файл tg-logger.php будет перезаписан и в нём будут указаны id тем
На этом настройка модуля закончена, ниже рассмотрим как работать с модулем 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 и статический метод sendLog().
TgLogger::sendLog('Your message', 'level');
Большое спасибо тем кто дочитать данную статью до конца! Буду очень рад если вы поддержите данное решение на GitHub и напишете свой комментарий под данным постом.
{message}