1
0
mirror of https://github.com/otter18/tg_logger.git synced 2025-08-10 21:41:59 +02:00

18 Commits

Author SHA1 Message Date
ChernV
b9c4bd8872 Add files via upload 2021-02-05 11:04:53 +03:00
ChernV
89730a4702 Delete example_scr.jpg 2021-02-05 11:03:50 +03:00
Chernykh Vladimir
3d257f1506 v3.0 minor fix 2021-02-05 11:03:08 +03:00
Chernykh Vladimir
f9d92952b4 v3.0 initial commit 2021-02-05 10:55:57 +03:00
ChernV
c8c69b1cf9 Delete setup.cfg 2021-02-03 20:58:43 +03:00
ChernV
0d563d9203 Delete tg_logger.toml 2021-02-03 20:58:35 +03:00
Chernykh Vladimir
b455a023d9 package meta is added 2021-02-03 20:57:17 +03:00
ChernV
dd76f85e1c Delete requirements.txt 2021-02-03 20:19:45 +03:00
Chernykh Vladimir
f72e3d6ba2 v2.0.1 realise 2021-02-03 20:18:57 +03:00
Chernykh Vladimir
34e7761bcf python package architecture 2021-02-03 19:41:29 +03:00
ChernV
3c171f8cfb Update tg_logger.py 2021-01-01 16:24:50 +03:00
ChernV
3bdebb4661 Update README.md 2021-01-01 15:40:15 +03:00
ChernV
566cdaaeb4 Add files via upload 2021-01-01 15:38:33 +03:00
ChernV
219abda65e Add files via upload 2021-01-01 15:34:57 +03:00
ChernV
a92e68bf2f Delete example_scr.jpg 2021-01-01 15:34:22 +03:00
ChernV
276a2e0ef2 Add files via upload 2021-01-01 15:33:54 +03:00
ChernV
964b0424cd Update README.md 2021-01-01 15:32:55 +03:00
ChernV
389ea1a39f Update example.py 2021-01-01 15:31:41 +03:00
10 changed files with 135 additions and 72 deletions

8
.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
__pycache__/
*.pyc
dist/
*.egg-info/
.coverage
build/
setup.cfg
tg_logger.toml

View File

@@ -1,36 +1,49 @@
# tg_logger tool
bridging python logging and user files to tg bot
## Example
# ![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 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
# Logging format
logging.basicConfig(format='%(asctime)s:%(name)s:%(levelname)s - %(message)s')
formatter = logging.Formatter('%(name)s:%(levelname)s - %(message)s')
# Telegram data
token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
users = [1111111111]
# Setup TgLoggerHandler
tg_handler = tg_logger.TgLoggerHandler(
token="1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", # tg bot token
users=[111111111], # 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 @chernykh_vladimir")
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="1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", # tg bot token
users=[111111111], # list of user_id
timeout=10 # default is 10 seconds
token=token, # tg bot token
users=users, # list of user_id
timeout=10 # 10 seconds by default
)
file_name = "test.txt"
@@ -38,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](/img/example_scr.jpg)
### Example screenshot
![example_scr](https://raw.githubusercontent.com/otter18/tg_logger/master/img/example_scr.png)

View File

@@ -1,39 +0,0 @@
# Copyright (c) ChernV (@otter18), 2021.
import logging
import tg_logger
# 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="1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", # tg bot token
users=[111111111], # list of user_id
timeout=10 # default value is 10 seconds
)
tg_handler.setFormatter(formatter)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(tg_handler)
# Test
logger.info("Hello from tg_logger by @chernykh_vladimir")
# TgFileLogger example
tg_files_logger = tg_logger.TgFileLogger(
token="1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", # tg bot token
users=[111111111], # list of user_id
timeout=10 # default is 10 seconds
)
file_name = "test.txt"
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")

35
example/example.py Normal file
View File

@@ -0,0 +1,35 @@
# Copyright (c) ChernV (@otter18), 2021.
import logging
import tg_logger
# Telegram data
token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
users = [1111111111]
# Base logger
logger = logging.getLogger('foo')
logger.setLevel(logging.INFO)
# Logging bridge setup
tg_logger.setup(logger, token=token, users=users)
# Test
logger.info("Hello from tg_logger by otter18")
# 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
)
file_name = "test.txt"
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")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

BIN
img/example_scr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

BIN
img/telegram-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1 +0,0 @@
pytelegrambotapi

22
setup.py Normal file
View File

@@ -0,0 +1,22 @@
from setuptools import setup, find_packages
setup(
name="tg_logger",
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",
author="ChernV (otter18)",
author_email="vchern185@gmail.com",
url="https://github.com/otter18/tg_logger",
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

@@ -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
@@ -37,7 +65,7 @@ class TgLoggerHandler(StreamHandler):
t0 = time()
while time() - t0 < self.timeout:
try:
self.bot.send_message(user_id, msg)
self.bot.send_message(user_id, msg, parse_mode="HTML")
break
except Exception as ex:
logger.exception("Exception while sending %s to %s:", msg, user_id)
@@ -77,7 +105,7 @@ class TgFileLogger:
t0 = time()
while time() - t0 < self.timeout:
try:
self.bot.send_document(user_id, data=data, caption=caption)
self.bot.send_document(user_id, data=data, caption=caption, parse_mode="HTML")
logger.info("File %s successfully send to %s", file_path, user_id)
break
except Exception as ex: