skip to navigation
skip to content

python-telegram-handler 2.0.1

A python logging handler that sends logs via Telegram Bot Api.

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.

History

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
 
File Type Py Version Uploaded on Size
python-telegram-handler-2.0.1.tar.gz (md5) Source 2017-03-07 4KB