Skip to main content
https://img.shields.io/pypi/status/python-telegram-handler.svg https://img.shields.io/pypi/pyversions/python-telegram-handler.svg https://badge.fury.io/py/python-telegram-handler.svg https://travis-ci.org/sashgorokhov/python-telegram-handler.svg?branch=master https://codecov.io/github/sashgorokhov/python-telegram-handler/coverage.svg?branch=master Code Climate https://img.shields.io/github/license/sashgorokhov/python-telegram-handler.svg

A python logging handler that sends logs via Telegram Bot Api

Installation

Via pip:

pip install python-telegram-handler

Usage

Register a new telegram bot and obtain a authentication token. (Instructions here https://core.telegram.org/bots#3-how-do-i-create-a-bot)

After that, you must obtain a chat_id. You can do that using included simple script. Start a new conversation with newly created bot, write something to it (it is important to initiate conversation first).

Also, there is an ability for handler to automatically retrieve chat_id. This will be done on handler initialization. But you still have to start a conversation with bot. Be aware: if program stops, server restarts, or something else will happen - handler will try to retrieve chat id from telegram, and may fail, if it will not find a NEW message from you. So i recommend you to use a script below for obtaining chat id.

Then run a command:

python -m telegram_handler <your token here>

If all went ok, a chat_id will be printed to stdout.

Using token and chat_id, configure log handler in your desired way. For example, using dictConfig:

{
    'version': 1,
    'handlers': {
        'telegram': {
            'class': 'telegram_handler.TelegramHandler',
            'token': 'your token',
            'chat_id': 'chat id'
        }
    },
    'loggers': {
        'my_logger': {
            'handlers': ['telegram'],
            'level': 'DEBUG'
        }
    }
}

Formatting

Currently the format of sent messages is very simple: <code>%(asctime)s</code> <b>%(levelname)s</b>\nFrom %(name)s:%(funcName)s\n%(message)s Exception traceback will be formatted as pre-formatted fixed-width code block. (https://core.telegram.org/bots/api#html-style)

If you want to tweak it, configure a telegram_handler.HtmlFormatter with your desired format string. Using a dictConfig:

...
{
    'formatters': {
        'telegram': {
            'class': 'telegram_handler.HtmlFormatter',
            'fmt': '%(levelname)s %(message)s'
        }
    }
    'handlers': {
        'telegram': {
            'class': 'telegram_handler.TelegramHandler',
            'formatter': 'telegram',
            'token': 'your token',
            'chat_id': 'chat id'
        }
    }
}
...

If you wish, you can enable emoji symbols in HtmlFormatter. Just specify use_emoji=True in HtmlFormatter settings. This will add to levelname a :white_circle: for DEBUG, :large_blue_circle: for INFO, and :red_circle: for WARNING and ERROR levels.

Proxy

In case if you have to use this package inside the country where Telegram servers are blocked by gowrnment you can specify proxy urls in config. Using a dictConfig:

...
{
    'handlers': {
        'telegram': {
            'class': 'telegram_handler.TelegramHandler',
            'formatter': 'telegram',
            'token': 'your token',
            'chat_id': 'chat id',
            'proxies': {
                'http': 'socks5://user:pass@host:port',
                'https': 'socks5://user:pass@host:port'
            }
        }
    }
}
...

Important! If you plan to use socks proxy make sure you have requests package with socks support installed:

pip install requests[socks]

History

2.2.0 (2019-08-19)

  • Add proxy support (#20) (by )

2.1.0 (2019-04-25)

  • Send message as file if it is too large

  • Fixes in MarkdownFormatter

  • Fixes in HTMLFormatter

  • Chat id retrieval fixes

  • Drop py33 support from tests

  • Update setup.py classifiers

  • Removed print()-calls in HtmlFormatter (#12) (by Lukas Garberg)

2.0.2 (2017-11-20)

  • fix TypeError in HtmlFormatter.format (by tompipen)

2.0 (2017-03-01)

  • Refactored HtmlFormatter and MarkdownFormatter

  • Refactored TelegramHandler

  • No more need to call a command to obtain a chat_id - it will be obtained automatically on handler init

  • Rewritten tests

  • Escape LogRecord things in HtmlFormatter

  • Added optional emoji symbols in HtmlFormatter.

1.1.3 (2016-09-22)

  • Setting escape_message field of StyledFormatter missed (@ihoru)

1.1.2 (2016-05-13)

  • Fixed setup.py requires option (changed to install_requires)

1.1.1 (2016-04-20)

  • Use HTML Formatter as default formatter for telegram handler

1.1.0 (2016-04-20)

  • Introduced HTML Formatter

  • Added log text escaping (closed #3)

  • Added requests timeout setting (closed #1)

  • Catching and logging all requests and their exceptions (closed #2)

1.0.0 (2016-04-19)

  • First PyPi release

0.1.0 (2016-04-19)

  • Initial release

Metadata

Release files for python-telegram-handler 2.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-telegram-handler 2.2.1
File Size Uploaded
python-telegram-handler-2.2.1.tar.gz 6.0 kB Details

Release files / python-telegram-handler-2.2.1.tar.gz

Download URL python-telegram-handler-2.2.1.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f6e9ca60e15fa4e4595e323cc57362fe20cca3ca16e06158ad726caa48b3b16e
BLAKE2b-256 checksum
How to use checksums
ffc04c943016e844b332aa2058cdb1d76aa0044d0c27596f362639a087d23a8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.8

Release history Release notifications | RSS feed

This release

2.2.1 This release

1 release file

2.2

1 release file

2.1.1

1 release file

2.1.0

1 release file

2.0.2

1 release file

2.0.1

1 release file

2.0

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page