mirror of
https://github.com/otter18/tg_logger.git
synced 2025-08-04 21:32:56 +02:00
3
.gitignore
vendored
3
.gitignore
vendored
@ -3,3 +3,6 @@ __pycache__/
|
|||||||
dist/
|
dist/
|
||||||
*.egg-info/
|
*.egg-info/
|
||||||
.coverage
|
.coverage
|
||||||
|
build/
|
||||||
|
setup.cfg
|
||||||
|
tg_logger.toml
|
||||||
|
55
README.md
55
README.md
@ -1,43 +1,49 @@
|
|||||||
#  tg_logger tool
|
#  Telegram logger
|
||||||
[](https://pypi.org/project/tg-logger/)
|
[](https://pypi.org/project/tg-logger/)
|
||||||
|
[](https://pypi.org/project/tg-logger/)
|
||||||
|
[](https://pypi.org/project/tg-logger/)
|
||||||
|
|
||||||
bridging python logging and user files to tg bot
|
Bridging python logging and files to tg bot
|
||||||
## Example
|
|
||||||
|
|
||||||
|
## Installation & Usage
|
||||||
|
- Available by `pip install tg-logger`
|
||||||
|
- Use with `import tg_logger`
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
### TgLogger example
|
||||||
```python
|
```python
|
||||||
# Copyright (c) ChernV (@otter18), 2021.
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import tg_logger
|
import tg_logger
|
||||||
|
|
||||||
# Telegram data
|
# Telegram data
|
||||||
token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||||
users = [1111111111]
|
users = [1111111111]
|
||||||
|
|
||||||
# Logging format
|
# Base logger
|
||||||
logging.basicConfig(format='%(asctime)s:%(name)s:%(levelname)s - %(message)s')
|
logger = logging.getLogger('foo')
|
||||||
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()
|
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
logger.addHandler(tg_handler)
|
|
||||||
|
# Logging bridge setup
|
||||||
|
tg_logger.setup(logger, token=token, users=users)
|
||||||
|
|
||||||
# Test
|
# Test
|
||||||
logger.info("Hello from tg_logger by otter18")
|
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
|
# TgFileLogger example
|
||||||
tg_files_logger = tg_logger.TgFileLogger(
|
tg_files_logger = tg_logger.TgFileLogger(
|
||||||
token=token, # tg bot token
|
token=token, # tg bot token
|
||||||
users=users, # list of user_id
|
users=users, # list of user_id
|
||||||
timeout=10 # default is 10 seconds
|
timeout=10 # 10 seconds by default
|
||||||
)
|
)
|
||||||
|
|
||||||
file_name = "test.txt"
|
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")
|
example_file.write("Hello from tg_logger by otter18")
|
||||||
|
|
||||||
tg_files_logger.send(file_name, "Test file")
|
tg_files_logger.send(file_name, "Test file")
|
||||||
|
|
||||||
# And one more time...
|
|
||||||
logger.info("Finishing tg_logger demo")
|
|
||||||
|
|
||||||
```
|
```
|
||||||
## Result
|
|
||||||

|
### Example screenshot
|
||||||
|

|
||||||
|
@ -8,20 +8,12 @@ import tg_logger
|
|||||||
token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||||
users = [1111111111]
|
users = [1111111111]
|
||||||
|
|
||||||
# Logging format
|
# Base logger
|
||||||
logging.basicConfig(format='%(asctime)s:%(name)s:%(levelname)s - %(message)s')
|
logger = logging.getLogger('foo')
|
||||||
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()
|
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
logger.addHandler(tg_handler)
|
|
||||||
|
# Logging bridge setup
|
||||||
|
tg_logger.setup(logger, token=token, users=users)
|
||||||
|
|
||||||
# Test
|
# Test
|
||||||
logger.info("Hello from tg_logger by otter18")
|
logger.info("Hello from tg_logger by otter18")
|
||||||
|
10
setup.py
10
setup.py
@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="tg_logger",
|
name="tg_logger",
|
||||||
version="2.0.1",
|
version="3.0",
|
||||||
description="A tool to bridge python logging and user files to telegram bot",
|
description="A tool to bridge python logging and user files to telegram bot",
|
||||||
long_description=open("README.md").read(),
|
long_description=open("README.md").read(),
|
||||||
long_description_content_type="text/markdown",
|
long_description_content_type="text/markdown",
|
||||||
@ -12,5 +12,11 @@ setup(
|
|||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
install_requires=[
|
install_requires=[
|
||||||
"pyTelegramBotAPI==3.7.6",
|
"pyTelegramBotAPI==3.7.6",
|
||||||
]
|
],
|
||||||
|
classifiers=[
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"License :: OSI Approved :: MIT License",
|
||||||
|
"Operating System :: OS Independent",
|
||||||
|
],
|
||||||
|
python_requires='>=3.6',
|
||||||
)
|
)
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
[build-system]
|
|
||||||
requires = [
|
|
||||||
"setuptools>=42",
|
|
||||||
"wheel"
|
|
||||||
]
|
|
||||||
build-backend = "setuptools.build_meta"
|
|
@ -9,7 +9,35 @@ import telebot
|
|||||||
|
|
||||||
# logging setup
|
# logging setup
|
||||||
logger = logging.getLogger(__name__)
|
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):
|
class TgLoggerHandler(StreamHandler):
|
||||||
@ -17,7 +45,7 @@ class TgLoggerHandler(StreamHandler):
|
|||||||
|
|
||||||
def __init__(self, token: str, users: List[int], timeout: int = 10):
|
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 token: tg bot token to log form
|
||||||
:param users: list of used_id to log to
|
:param users: list of used_id to log to
|
||||||
|
Reference in New Issue
Block a user