emotality / laravel-telegram-logger
Laravel package to report exceptions to a Telegram chat, group or channel.
Fund package maintenance!
www.buymeacoffee.com/emotality
Installs: 2 007
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 1
Open Issues: 0
Requires
- php: ^8.1
- ext-json: *
- illuminate/http: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- monolog/monolog: ^3.0
Requires (Dev)
- laravel/pint: ^1.15
README
Laravel package to report exceptions to a Telegram chat, group or channel.
Requirements
- PHP 8.1+
- Laravel 10
Installation
composer require emotality/laravel-telegram-logger
php artisan vendor:publish --provider="Emotality\Telegram\TelegramLoggerServiceProvider"
- Add the following lines to your
.env
:
TELEGRAM_API_KEY="<telegram_api_key>" TELEGRAM_CHAT_ID="<telegram_chat_id>"
- Add the
telegram
block to thechannels
array, inside yourconfig/logging.php
file:
'channels' => [ ... 'telegram' => [ 'driver' => 'telegram', 'level' => 'error', 'cache_ttl' => env('TELEGRAM_CACHE_TTL', 300), ], ],
Note: Read more about the cache_ttl
key below.
- Update your log stack and add
telegram
to thechannels
array inconfig/logging.php
:
'stack' => [ 'driver' => 'stack', 'channels' => ['daily', 'telegram'], ..., ],
or change your LOG_CHANNEL
in your .env
:
LOG_CHANNEL=telegram
Caching TTL explained:
A MD5 checksum is being created for every exception, then that checksum is being cached for the cache_ttl
seconds you provide. If checksum exists in the cache, the log will not be sent.
In other words, when the exact same exception reoccurs, only the first exception will be logged, if after 300 seconds it still occurs, it will be logged again.
Only the first occurrence of the same exception will be logged every 300 seconds to avoid flooding the Telegram API and your chat.
The cache_ttl
key accepts false
to disable caching, meaning, each and every exception will be logged to Telegram, even if it's 1000 of the same exception.
License
laravel-telegram-logger is released under the MIT license. See LICENSE for details.