Skip to main content

It is a library that allows you to send logging logs to Telegram

Project description

Telegram Bot Logger

PyPI Version Python Version

Telegram Bot Logger is a Python library that allows you to send logging logs to Telegram using the Bot API. It simplifies the process of integrating Telegram bot notifications into your Python applications, making it easy to monitor and manage your application's logs.

screenshot

Installation

You can install telegram_bot_logger using pip:

pip install telegram-bot-logger

Usage

Replace YOUR_BOT_TOKEN and chat_ids with your actual bot token and chat IDs. You can obtain a bot token by creating a new bot on Telegram and obtaining it from the BotFather.

import telegram_bot_logger

import logging


logger = logging.getLogger("telegram_bot_logger_example")

handler = telegram_bot_logger.TelegramMessageHandler(
    bot_token = "YOUR_BOT_TOKEN",  # Required; bot's token from @BotFather
    chat_ids = [
        12345678,
        -1001234567890,  # For group chat id, make sure you pass the chat id as integer
        "@username"
    ],  # Required; you can pass id as integer or username as string
    api_server = telegram_bot_logger.api_server.TelegramAPIServer(
        base = "https://api.telegram.org/bot{bot_token}/{method}"
    ),  # Optional; set by default
    format_type = "text" or "TEXT" or telegram_bot_logger.formatters.FormatType.TEXT,  # Optional; also can be "DOCUMENT", by default it is "TEXT"
    document_name_strategy = "timestamp" or "TIMESTAMP" or telegram_bot_logger.formatters.DocumentNameStrategy.TIMESTAMP,  # Optional; used to define documents' names; also can be "ARGUMENT", by default it is "TIMESTAMP"
    proxies = {
        "http://": "http://localhost:8080"
    } or "http://localhost:8080",  # Optional; "dict[scheme, url]" or just "url", please see httpx's supported proxy types
    formatter = formatters.TelegramHTMLTextFormatter(),  # Optional; you can create your own class inherited from formatters.TelegramBaseFormatter and pass it
    additional_body = {
        "reply_to_message_id": 1
    }  # Optional; additional request body on sendMessage and sendDocument
)

logger.setLevel(logging.DEBUG)

logger.addHandler(handler)


logger.debug("debug-message")
# Or:
logger.debug("debug-message", extra={"document_name": 123})  # 123 is an argument; to use this feature you need to set `format_type = formatters.FormatType.DOCUMENT` and `document_name_strategy = formatters.DocumentNameStrategy.ARGUMENT` while initiating TelegramMessageHandler

It is highly recommend using string formatters in log messages, as these are not expanded if the logging level is not high enough, making difference in performance critical applications:

# Use string formatter to avoid formatting an excessive log message argument 
long_list = list(range(1000))
logger.info("My long list is: %s", long_list)

You can also show tracebacks:

try:
    raise RuntimeError("Ooops I did it again")
except Exception as e:
    logger.exception(e)

screenshot-exception

Closing the handler

This logging handler creates a daemon background thread, as it uses Python's internal QueueHandler. The thread is closed with Python's atexit handler. However for some applications, like pytest, to cleanly shut down, you may need to shutdown the handler manually.

# Release any background threads created by the Telegram logging handler
handler.close()

More examples

Here is an example how to customise Telegram output a bit:

import logging
import telegram_bot_logger
from telegram_bot_logger.formatters import TelegramHTMLTextFormatter

# Fine tune our Telegram chat output
formatter = TelegramHTMLTextFormatter()
formatter._EMOTICONS[logging.DEBUG] = "📜"  # Patch in the emoticon by logging level
formatter._TAG_FORMAT = ""  # Disable tags in the output
formatter._HEADER_FORMAT = "<pre>{emoticon} {message}{description}</pre>"  # Disable line number and module name in the output

telegram_handler = telegram_bot_logger.TelegramMessageHandler(
    bot_token = "YOUR_BOT_TOKEN",
    chat_ids = [
        -1001234567890,
    ],
    format_type = "text",
    formatter = formatter,
    level = logging.INFO
)

logging.getLogger().addHandler(telegram_handler)

Stay Updated

For the latest news and updates, follow my Telegram Channel.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

telegram_bot_logger-0.0.4.post0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

telegram_bot_logger-0.0.4.post0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file telegram_bot_logger-0.0.4.post0.tar.gz.

File metadata

File hashes

Hashes for telegram_bot_logger-0.0.4.post0.tar.gz
Algorithm Hash digest
SHA256 ffebfe5c8abff27e86bece99d42a774afee564ba46e48181deac3901d0ea9e7e
MD5 7d49df986d69809ce866a925863b29b9
BLAKE2b-256 b37e8b5d376b5234ebf7fdcde62e22fb6dc8a4bb51897293a5471c21ddfacec7

See more details on using hashes here.

Provenance

The following attestation bundles were made for telegram_bot_logger-0.0.4.post0.tar.gz:

Publisher: pypi.yml on arynyklas/telegram_bot_logger

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file telegram_bot_logger-0.0.4.post0-py3-none-any.whl.

File metadata

File hashes

Hashes for telegram_bot_logger-0.0.4.post0-py3-none-any.whl
Algorithm Hash digest
SHA256 917ecf8903aea0f49419b1e4bfb82fcc2b721f38c57c643d4f6b48559c40e02c
MD5 a024784ee3b8a15b76a048011408bc3e
BLAKE2b-256 0fce8bd35a661129ae73afcfa4aa0995f1615652cd148afdea1eef5060506da6

See more details on using hashes here.

Provenance

The following attestation bundles were made for telegram_bot_logger-0.0.4.post0-py3-none-any.whl:

Publisher: pypi.yml on arynyklas/telegram_bot_logger

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page