Skip to main content

Easy and opinionated logging configuration for Python apps

Project description

Don’t fight with logging …

Coverage Status PyPI Version PyPI License PyPI latest


Easy logging configuration based on environment variables.

Features:

  • Set logging level using environment variable LOG_LEVEL (defaults to INFO)

  • Set which loggers to enable using environment variable LOGGERS (defaults to ‘’, everything)

  • Always output to stdout

  • Optional JSON formatter

  • Completely disable logging setting LOG_LEVEL=DISABLED

Requirements:

  • Python 3.10+

Install:

pip install belogging

Examples:

Simple applications:

# my_script.py

import belogging
belogging.load()
# ^^ this call is optional, only useful for customization
# For example, to enable JSON output: belogging.load(json=True)

# belogging.getLogger is just a sugar to logging.getLogger, you can
# use logging.getLogger as usual (and recommended).
logger = belogging.getLogger('foobar')
logger.debug('test 1')
logger.info('test 2')

Executing:

# selecting LOG_LEVEL
$ LOG_LEVEL=DEBUG python my_script.py
# level=DEBUG message=test 1
# level=INFO message=test 2

# selecting LOGGERS
$ LOGGERS=foobar python my_script.py
# Both messages

# Both
$ LOGGERS=foobar LOG_LEVEL=INFO my_script.py
# only level=INFO message=test 2

Applications should call `belogging.load()` upon initialization. The first `__init__.py` would be a good candidate, but anything before any call to `logging` module will be fine.

Django:

In your projects `settings.py`:

import belogging
# Disable django logging setup
LOGGING_CONFIG = None
belogging.load()

Inside your code, just use `logging.getLogger()` as usual.

$ export LOG_LEVEL=WARNING
$ ./manage.py runserver
# It will output only logging messages with severity > WARNING

Logging follows a hierarchy, so you easily select or skip some logging messages:

$ export LOGGERS=my_app.critical_a,my_app.critical_c,my_lib
$ ./my-app.py
# "my_app.critical_b messages" will be skipped
# all messages from my_lib will show up

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

belogging-0.2.0.tar.gz (27.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

belogging-0.2.0-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file belogging-0.2.0.tar.gz.

File metadata

  • Download URL: belogging-0.2.0.tar.gz
  • Upload date:
  • Size: 27.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.10

File hashes

Hashes for belogging-0.2.0.tar.gz
Algorithm Hash digest
SHA256 fe28c51eef09e62acfd2139f8d249853198022c027e36b958f6bb59ac3da8987
MD5 954d9eff409c494f2b56856fec819d21
BLAKE2b-256 4d64e0a91b7d8a9fafcdf795b7c1e909e4e2d3839d253aed5da69fb0eda64f01

See more details on using hashes here.

File details

Details for the file belogging-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: belogging-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.10

File hashes

Hashes for belogging-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fb9aeb583274d9354ed646ae7c6e82c4a206470021c895382849c3a34ae78610
MD5 76e0e1da6f66ba3aa1ee24caa6bab2e1
BLAKE2b-256 631688dbc386ea75fb33ec0d46d3c84f23c1a6884a159876cb29361d148cf66d

See more details on using hashes here.

Supported by

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