1
0
mirror of https://github.com/otter18/tg_logger.git synced 2025-08-04 21:32:56 +02:00

Merge pull request #1 from otter18/beta

v3.0 realise
This commit is contained in:
ChernV
2021-02-05 11:17:46 +03:00
committed by GitHub
6 changed files with 75 additions and 49 deletions

3
.gitignore vendored
View File

@ -3,3 +3,6 @@ __pycache__/
dist/
*.egg-info/
.coverage
build/
setup.cfg
tg_logger.toml

View File

@ -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('<b>%(name)s:%(levelname)s</b> - <code>%(message)s</code>')
# 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)

View File

@ -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('<b>%(name)s:%(levelname)s</b> - <code>%(message)s</code>')
# 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")

View File

@ -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',
)

View File

@ -1,6 +0,0 @@
[build-system]
requires = [
"setuptools>=42",
"wheel"
]
build-backend = "setuptools.build_meta"

View File

@ -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 = '<b>%(name)s:%(levelname)s</b> - <code>%(message)s</code>'):
"""
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