diff --git a/.gitignore b/.gitignore index 0bf0832..98ea5cc 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ __pycache__/ dist/ *.egg-info/ .coverage +build/ +setup.cfg +tg_logger.toml diff --git a/README.md b/README.md index 86fbbbd..1c5e450 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,49 @@ -# ![tg_logo](https://i.ibb.co/ftBZY9z/telegram-icon.png) tg_logger tool +# ![tg_logo](https://raw.githubusercontent.com/otter18/tg_logger/master/img/telegram-icon.png) Telegram logger [![](https://img.shields.io/pypi/v/tg-logger.svg)](https://pypi.org/project/tg-logger/) +[![](https://img.shields.io/pypi/pyversions/tg-logger.svg)](https://pypi.org/project/tg-logger/) +[![](https://img.shields.io/pypi/l/tg-logger.svg)](https://pypi.org/project/tg-logger/) -bridging python logging and user files to tg bot -## Example +Bridging python logging and files to tg bot +## Installation & Usage +- Available by `pip install tg-logger` +- Use with `import tg_logger` + +## Examples +### TgLogger example ```python -# Copyright (c) ChernV (@otter18), 2021. - import logging - import tg_logger # Telegram data token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" users = [1111111111] -# Logging format -logging.basicConfig(format='%(asctime)s:%(name)s:%(levelname)s - %(message)s') -formatter = logging.Formatter('%(name)s:%(levelname)s - %(message)s') - -# Setup TgLoggerHandler -tg_handler = tg_logger.TgLoggerHandler( - token=token, # tg bot token - users=users, # list of user_id - timeout=10 # default value is 10 seconds -) -tg_handler.setFormatter(formatter) -logger = logging.getLogger() +# Base logger +logger = logging.getLogger('foo') logger.setLevel(logging.INFO) -logger.addHandler(tg_handler) + +# Logging bridge setup +tg_logger.setup(logger, token=token, users=users) # Test logger.info("Hello from tg_logger by otter18") +``` + +### TgFileLogger example +```python +import logging +import tg_logger + +# Telegram data +token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +users = [1111111111] # TgFileLogger example tg_files_logger = tg_logger.TgFileLogger( token=token, # tg bot token users=users, # list of user_id - timeout=10 # default is 10 seconds + timeout=10 # 10 seconds by default ) file_name = "test.txt" @@ -45,10 +51,7 @@ with open(file_name, 'w') as example_file: example_file.write("Hello from tg_logger by otter18") tg_files_logger.send(file_name, "Test file") - -# And one more time... -logger.info("Finishing tg_logger demo") - ``` -## Result -![example_scr](https://i.ibb.co/ByDrZv3/example-scr.jpg) + +### Example screenshot +![example_scr](https://raw.githubusercontent.com/otter18/tg_logger/master/img/example_scr.png) diff --git a/example/example.py b/example/example.py index 1f64887..1052f1e 100644 --- a/example/example.py +++ b/example/example.py @@ -8,20 +8,12 @@ import tg_logger token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" users = [1111111111] -# Logging format -logging.basicConfig(format='%(asctime)s:%(name)s:%(levelname)s - %(message)s') -formatter = logging.Formatter('%(name)s:%(levelname)s - %(message)s') - -# Setup TgLoggerHandler -tg_handler = tg_logger.TgLoggerHandler( - token=token, # tg bot token - users=users, # list of user_id - timeout=10 # default value is 10 seconds -) -tg_handler.setFormatter(formatter) -logger = logging.getLogger() +# Base logger +logger = logging.getLogger('foo') logger.setLevel(logging.INFO) -logger.addHandler(tg_handler) + +# Logging bridge setup +tg_logger.setup(logger, token=token, users=users) # Test logger.info("Hello from tg_logger by otter18") diff --git a/setup.py b/setup.py index 3343864..beb9df6 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name="tg_logger", - version="2.0.1", + version="3.0", description="A tool to bridge python logging and user files to telegram bot", long_description=open("README.md").read(), long_description_content_type="text/markdown", @@ -12,5 +12,11 @@ setup( packages=find_packages(), install_requires=[ "pyTelegramBotAPI==3.7.6", - ] + ], + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], + python_requires='>=3.6', ) diff --git a/tg_logger.toml b/tg_logger.toml deleted file mode 100644 index b5a3c46..0000000 --- a/tg_logger.toml +++ /dev/null @@ -1,6 +0,0 @@ -[build-system] -requires = [ - "setuptools>=42", - "wheel" -] -build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/tg_logger/__init__.py b/tg_logger/__init__.py index 9ed559c..3539d51 100644 --- a/tg_logger/__init__.py +++ b/tg_logger/__init__.py @@ -9,7 +9,35 @@ import telebot # logging setup logger = logging.getLogger(__name__) -logger.setLevel(logging.INFO) + + +def setup(base_logger: logging.Logger, + token: str = '', + users: List[int] = [], + timeout: int = 10, + tg_format: str = '%(name)s:%(levelname)s - %(message)s'): + """ + Setup TgLogger + + :param base_logger: base logging.Logger obj + :param token: tg bot token to log form + :param users: list of used_id to log to + :param timeout: seconds for retrying to send log if error occupied + :param tg_format: logging format for tg messages (html parse mode) + + :return: None + """ + # Logging format + formatter = logging.Formatter(tg_format) + + # Setup TgLoggerHandler + tg_handler = TgLoggerHandler( + token=token, # tg bot token + users=users, # list of user_id + timeout=timeout # default value is 10 seconds + ) + tg_handler.setFormatter(formatter) + base_logger.addHandler(tg_handler) class TgLoggerHandler(StreamHandler): @@ -17,7 +45,7 @@ class TgLoggerHandler(StreamHandler): def __init__(self, token: str, users: List[int], timeout: int = 10): """ - Setup TgLoggerHandler tool + Setup TgLoggerHandler class :param token: tg bot token to log form :param users: list of used_id to log to