cesarbalzer / laravel-telegram-logger
Canal de log customizado para enviar mensagens de erro para o Telegram
Package info
github.com/CesarBalzer/laravel-telegram-logger
pkg:composer/cesarbalzer/laravel-telegram-logger
v1.0.6
2025-07-10 17:37 UTC
Requires
- php: ^8.2
README
Laravel Telegram Logger
Este pacote permite que aplicações Laravel enviem logs críticos (error, emergency, etc) diretamente para um grupo ou canal do Telegram usando um bot. Ideal para monitorar falhas em produção em tempo real.
✅ Recursos
- Envio automático de erros via
Log::error(),Log::emergency(), etc. - Suporte a
.envpara configuração rápida. - Ignora mensagens irrelevantes como 404 de scans.
- Integrado com o sistema de logging nativo do Laravel.
🧰 Instalação
composer require cesarbalzer/laravel-telegram-logger:@dev
Se estiver desenvolvendo localmente com um repositório path:
// composer.json "repositories": [ { "type": "path", "url": "./packages/cesarbalzer/laravel-telegram-logger" } ]
⚙️ Configuração
1. Adicione no config/logging.php:
'channels' => [ 'telegram' => [ 'driver' => 'custom', 'via' => CesarBalzer\TelegramLogger\Logger\TelegramLogger::class, 'level' => env('LOG_TELEGRAM_LEVEL'), ], ],
2. Publique a configuração:
php artisan vendor:publish --tag=telegram-logger-config
3. Configure seu .env:
TELEGRAM_BOT_TOKEN=seu_token_aqui TELEGRAM_CHAT_ID=-1001234567890 TELEGRAM_LOG_LEVEL=error
⚠️ O
chat_idde grupos começa com-100seguido dos dígitos do ID.
🤖 Como criar seu Bot no Telegram
- No Telegram, abra o
@BotFather - Envie
/newbote siga as instruções - Copie o
BOT TOKENgerado (ex:123456:ABCDEF...)
💬 Como obter o chat_id do grupo
- Crie um grupo no Telegram
- Adicione o bot ao grupo
- Envie qualquer mensagem no grupo
- Acesse no navegador:
https://api.telegram.org/bot<SEU_BOT_TOKEN>/getUpdates
- Procure algo assim no JSON retornado:
"chat": { "id": -1001234567890, "title": "Nome do Grupo", ... }
Use o id no .env.
🧪 Teste rápido
Você pode testar com uma rota simples ou criar alguns testes forçados:
Route::get('/error', function () { // ✅ Log informativo - não vai para o Telegram Log::info('HttpRequest GET 200 /home', [ 'method' => 'GET', 'endpoint' => '/home', 'status' => 200, 'ip' => request()->ip(), ]); // 🚫 Log ignorado por palavra-chave (não será enviado ao Telegram) Log::error('HttpRequest GET 404 sitemap.xml', [ 'method' => 'GET', 'endpoint' => 'sitemap.xml', 'status' => 404, 'ip' => request()->ip(), ]); // ✅ Log de erro real - será enviado ao Telegram Log::error('🚨 Erro crítico no processamento do pagamento', [ 'user_id' => 999, 'order_id' => 12345, 'status' => 'failed', ]); // ✅ Simulando exceção capturada try { throw new \Exception("Erro de teste proposital em /error"); } catch (\Throwable $e) { Log::error("🚨 Exceção capturada em /error: " . $e->getMessage(), [ 'file' => $e->getFile(), 'line' => $e->getLine(), // Não incluí o trace para não sujar o Telegram ]); } return 'Logs enviados! Verifique o Telegram e o storage/logs/laravel.log'; }); Route::get('/telegram', function () { // ✅ Teste direto no canal Telegram Log::channel('telegram')->error('🚨 Log de teste no canal Telegram', [ 'user_id' => 999, 'ip' => request()->ip(), 'time' => now()->toDateTimeString(), ]); return 'Log enviado!'; });
📄 Licença
MIT © Cesar Balzer