arhx/telegram-log-channel
Laravel log channel that sends Monolog messages to a Telegram chat via bot token and chat ID. Configure via .env or logging.php, add to your logging stack, and it safely falls back to a NullHandler when unset. Includes optional queued job failure alerts.
topic_id (env TELEGRAM_LOG_TOPIC_ID), sent to the Bot API as message_thread_id, so logs land in a specific topic of a forum supergroup instead of General. Empty / unset → the key is omitted entirely, so plain groups and channels behave exactly as before.topic_ids (any channel can use the telegram driver), which is how one bot serves e.g. an ERROR topic and an UPDATES topic.telegram-log:test accepts --channel= to test any channel using the telegram driver (defaults to telegram).guzzlehttp/guzzle constraint is now ^7.0|^8.0. No code changes were required — the client options (verify, timeout, connect_timeout) and the post() JSON send path behave identically on both majors.laravel/framework still pins guzzlehttp/guzzle ^7.8.2 (as of v13.20.0), so a standard Laravel app will keep resolving Guzzle 7 until the framework widens its own constraint. This release simply stops the package from being the blocker.Cache facade. Controlled by TELEGRAM_LOG_THROTTLE (defaults to 600 seconds = 10 minutes; 0 disables it).timeout (5s) and connect_timeout (3s) so an unreachable Telegram API no longer blocks the request/queue worker indefinitely.config() instead of env() directly, ensuring compatibility with php artisan config:cache.mergeConfigFrom in register() so default values work without publishing.publishes() so users can publish config/telegram-log-channel.php for production use with config cache.Queue::failing listener).TELEGRAM_LOG_QUEUE_FAILURES env variable (defaults to true).TelegramHandler to verify recursion protection and error handling.autoload-dev to composer.json for test support.TelegramHandler.try-catch block in TelegramHandler::write to handle exceptions during log sending.logSelfError to log internal errors to the single channel or system log without recursion.How can I help you explore Laravel packages today?