Skip to main content

Easy-to-read display of logs with save to db redis and sending notifications in telegram

Project description

Simple framework for easy-to-read display of logs with save to db redis and sending notifications in telegram.

Once I couldn't find a simple framework that does 3 things that are important to me:

  • marking messages with color in the terminal,
  • saving logs by day to the database redis,
  • sending important notifications in telegram.

Then it was created LogsWeasel.


log = LogsWeasel(settings={
    'redis_connection': {
        'db': {{id_database, default that 0, int}},
        'host': {{redis_host, str}}),
        'port': {{number_of_port, int}},
        'username': {{username, str}},
        'password': {{password, str}},
    'redis_files': {
        'prefix_file': 'logs_',
        'frequency': 'day'},
    'telegram_token': {{you_tg_token, str}},
    'users_list': {{[tg_id_int_1, tg_id_int_2, ...], list with int}})

Example use:

from logsweasel import LogsWeasel

log = LogsWeasel(settings={
    'redis_connection': {
        'db': int(os.getenv('redis_db')),
        'host': os.getenv('redis_host'),
        'port': int(os.getenv('redis_port')),
        'username': os.getenv('redis_username'),
        'password': os.getenv('redis_password')},
    'redis_files': {
        'prefix_file': 'logs_',
        'frequency': 'day'},
    'telegram_token': os.getenv('telegram_token'),
    'users_list': [int(os.getenv('user_tgid'))]})


def hello_world(def_name='Hello World'):
    try:
        log.info_start(def_name) # message starting
        message = 'Hello World #1'
        print(message)
        time.sleep(3) # working...
        if message == 'Hello World #1':
            log.info_done(def_name, send=True) # done message
        else:
            log.warning(def_name) # not done message
    except Exception:
        log.critical(def_name) # finish with error


hello_world()

where:

  • redis_connection - settings for your database redis.

redis_files:

  • prefix_file - name of your save in db redis. Default key in db redis: {prefix_file}{date}

  • frequency - you can use 3 types frequency for save logs in new key: day, week, month.

  • telegram_token - token to initialize your bot to send notifications

  • users_list - list of user IDs to whom notifications will be sent

* You can find out your telegram ID, for example, using a bot @my_id_bot

* You can also save some logs in a separate file (for even better readability), for this you can use the following construction:

log.info(def_name, postfix='another_key')
You save the key like this: {prefix_file}{date}{postfix}

* If you do not want to use redis, write None in key redis_connection

* If you do not want to use telegram, write None in key telegram_token


Default methods for save logs:

Information records/notifications. Marked in green in the terminal
log.info() - default message
log.info_start() - usually used when starting a function
log.info_done() - usually used when a function has completed successfully
log.info_not_done() - used when a function has not completed

Notices to watch out for. Marked in yellow in the terminal.
log.warning() - important low
log.warning_not_done() - important medium
log.warning_error() - important high

Critical notices. They have the ability to save in the terminal full descriptions of the errors that have occurred.
log.critical() - error with important high
log.critical_fatal() - error with important very high, х_х

* default argument for warning/critical - exc=True, that add traceback message

** Use telegram bot notifications with great care. A large number of users in the send list will affect the performance of the program as a whole!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

logs_weasel-1.15.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

logs_weasel-1.15-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file logs_weasel-1.15.tar.gz.

File metadata

  • Download URL: logs_weasel-1.15.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for logs_weasel-1.15.tar.gz
Algorithm Hash digest
SHA256 d4e380676a457486a29e905a941f90127d5755728d8ff58e3885817a9458fd1f
MD5 a26529ec5cd185a8e50f48d6e257f518
BLAKE2b-256 2c399ca291e4b8d3767e3e0dbe4b3efb9b3936289ef7c710c9e0d42b188caf8f

See more details on using hashes here.

File details

Details for the file logs_weasel-1.15-py3-none-any.whl.

File metadata

  • Download URL: logs_weasel-1.15-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for logs_weasel-1.15-py3-none-any.whl
Algorithm Hash digest
SHA256 7940d1c3aa296a918ca90691003f989971a71c252562a6915baf6ee665f32792
MD5 d2604e585f647388930aea787add041c
BLAKE2b-256 bef75f98a7750fc624fca3fc2618f49acb37bbc69c710c02487d09d98c32dccc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page