Fork a python logging handler that sends logs via Telegram Bot Api with proxy
Project description
python-telegram-handler-proxy
***********************
Original package https://github.com/sashgorokhov/python-telegram-handler
Thank you bro \m/
Installation
============
Via pip:
.. code-block:: shell
pip install python-telegram-handler-proxy
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:
.. code-block:: shell
python -m telegram_handler_proxy <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:
.. code-block:: python
{
'version': 1,
'handlers': {
'telegram': {
'class': 'telegram_handler_proxy.TelegramHandler',
'token': 'your token',
'chat_id': 'chat id',
'proxy_url': 'url',
'proxy_port': None
}
},
'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_proxy.HtmlFormatter`` with your desired format string.
Using a dictConfig:
.. code-block:: python
...
{
'formatters': {
'telegram': {
'class': 'telegram_handler_proxy.HtmlFormatter',
'fmt': '%(levelname)s %(message)s'
}
}
'handlers': {
'telegram': {
'class': 'telegram_handler_proxy.TelegramHandler',
'formatter': 'telegram',
'token': 'your token',
'chat_id': 'chat id',
'proxy_url': 'url',
'proxy_port': None
}
}
}
...
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.
.. :changelog:
History
-------
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
***********************
Original package https://github.com/sashgorokhov/python-telegram-handler
Thank you bro \m/
Installation
============
Via pip:
.. code-block:: shell
pip install python-telegram-handler-proxy
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:
.. code-block:: shell
python -m telegram_handler_proxy <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:
.. code-block:: python
{
'version': 1,
'handlers': {
'telegram': {
'class': 'telegram_handler_proxy.TelegramHandler',
'token': 'your token',
'chat_id': 'chat id',
'proxy_url': 'url',
'proxy_port': None
}
},
'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_proxy.HtmlFormatter`` with your desired format string.
Using a dictConfig:
.. code-block:: python
...
{
'formatters': {
'telegram': {
'class': 'telegram_handler_proxy.HtmlFormatter',
'fmt': '%(levelname)s %(message)s'
}
}
'handlers': {
'telegram': {
'class': 'telegram_handler_proxy.TelegramHandler',
'formatter': 'telegram',
'token': 'your token',
'chat_id': 'chat id',
'proxy_url': 'url',
'proxy_port': None
}
}
}
...
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.
.. :changelog:
History
-------
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file python-telegram-handler-proxy-1.0.2.tar.gz
.
File metadata
- Download URL: python-telegram-handler-proxy-1.0.2.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9fbbb14dfdf0d0bdee3f7442a55fc740c36ff339a5ebb52fac9cd5522c4bd02 |
|
MD5 | 9557987e2fd0a09f81cba0fe3c2c6563 |
|
BLAKE2b-256 | 4323864425024705dca661aeb0eaf4607355f82c219bf71c746b6d1402726599 |