dmitrijkalugin / message-log
Laravel log handler that sends log messages to various messengers (Telegram, Slack, Discord)
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^10.0|^11.0|^12.0
- monolog/monolog: ^3.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2026-03-26 07:00:47 UTC
README
Laravel библиотека для автоматической отправки логов в мессенджеры (Telegram, Slack, Discord).
Возможности
- ✅ Отправка логов в Telegram, Slack, Discord
- ✅ Настраиваемые уровни логирования для каждого канала
- ✅ Асинхронная отправка через Laravel Queues
- ✅ Throttling для предотвращения спама
- ✅ Красивое форматирование сообщений
- ✅ Легко расширяемая архитектура
Установка
1. Установка через Composer
composer require dmitrijkalugin/message-log
2. Публикация конфигурации
php artisan vendor:publish --tag=messagelog-config
Это создаст файл config/messagelog.php с настройками.
Настройка
1. Добавьте переменные в .env
Для Telegram:
TELEGRAM_ENABLED=true TELEGRAM_BOT_TOKEN=your_bot_token_here TELEGRAM_CHAT_ID=your_chat_id_here
Для Slack:
SLACK_ENABLED=true SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL SLACK_CHANNEL=#logs SLACK_USERNAME="Laravel Logger"
Для Discord:
DISCORD_ENABLED=true DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR/WEBHOOK/URL DISCORD_USERNAME="Laravel Logger"
2. Настройте logging channel в config/logging.php
'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single', 'messagelog'], 'ignore_exceptions' => false, ], 'messagelog' => [ 'driver' => 'monolog', 'handler' => \MessageLog\MessageLogHandler::class, 'level' => env('LOG_LEVEL', 'error'), ], // ... другие каналы ],
3. Настройте уровни логирования
В config/messagelog.php можно настроить, какие уровни логов отправлять в каждый мессенджер:
'channels' => [ 'telegram' => [ 'enabled' => true, 'levels' => ['emergency', 'alert', 'critical', 'error'], ], ],
Доступные уровни: emergency, alert, critical, error, warning, notice, info, debug
Использование
После настройки библиотека автоматически будет отправлять логи:
// Эти логи автоматически отправятся в настроенные мессенджеры Log::error('Произошла ошибка', ['user_id' => 123]); Log::critical('Критическая ошибка системы!'); Log::emergency('Система недоступна!'); // С контекстом Log::error('Ошибка оплаты', [ 'order_id' => 12345, 'amount' => 1000, 'error' => 'Payment gateway timeout' ]);
Дополнительные настройки
Асинхронная отправка
Включите в .env:
MESSAGELOG_ASYNC=true
При этом сообщения будут отправляться через Laravel Queue. Убедитесь, что у вас настроен queue worker:
php artisan queue:work
Throttling (ограничение частоты)
По умолчанию включен throttling, чтобы избежать спама одинаковыми ошибками:
MESSAGELOG_THROTTLE_ENABLED=true MESSAGELOG_THROTTLE_LIMIT=5 # Максимум 5 одинаковых сообщений MESSAGELOG_THROTTLE_MINUTES=5 # В течение 5 минут
Получение токенов и webhook URL
Telegram
- Найдите @BotFather в Telegram
- Отправьте
/newbotи следуйте инструкциям - Скопируйте токен бота
- Добавьте бота в группу или получите свой chat_id через @userinfobot
Slack
- Перейдите в Slack API
- Создайте новое приложение
- Включите "Incoming Webhooks"
- Создайте новый webhook для нужного канала
- Скопируйте Webhook URL
Discord
- Откройте настройки канала в Discord
- Перейдите в "Integrations" → "Webhooks"
- Создайте новый webhook
- Скопируйте Webhook URL
Расширение функциональности
Добавление нового мессенджера
Создайте новый класс, реализующий HandlerInterface:
namespace MessageLog\Handlers; class CustomHandler extends AbstractHandler { public function send(string $level, string $message, array $context = []): bool { // Ваша реализация } }
Затем зарегистрируйте его в MessageLogHandler::initializeHandlers().
Требования
- PHP >= 8.1
- Laravel >= 10.0
- Guzzle HTTP >= 7.0
Лицензия
MIT License
Автор
Dmitrij Kalugin