Python logging extensions
Project description
LOGGING EXTRAS
A collection of various python logging extensions.
Documentation
https://logging-extras.readthedocs.io/en/latest/
Installation
Install logging-extras using pip
pip install logging-extras
Alternatively, download the latest binary or source package from github
Install wheel package with pip
:
pip install logging_extras-{tags}.whl
Install source package as editable:
tar -xf logging-extras-{tags}.tar.gz
cd logging-extras-{tags}
pip install -e .
Please refer to documentation pages for available modules.
Module Index
QueueListenerHandler
A simple QueueHandler
subclass implementation utilizing QueueListener
for configured handlers. This is helpful for detaching the logger handlers from the main threads, which reduces the risk of getting blocked, for example, when using slower handlers such as smtp, file, or socket handlers.
Example configuration:
File: logging.yaml
version: 1
objects:
queue:
class: queue.Queue
maxsize: 1000
formatters:
simple:
format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
handlers:
console:
class: logging.StreamHandler
formatter: simple
stream: ext://sys.stdout
file_handler:
class: logging.FileHandler
filename: 'test_logger.log'
formatter: simple
queue_handler:
class: logging_.handlers.QueueListenerHandler
handlers:
- cfg://handlers.console
- cfg://handlers.file_handler
queue: cfg://objects.queue
loggers:
test_logger:
level: DEBUG
handlers:
- queue_handler
propagate: yes
root:
level: NOTSET
handlers:
- console
Note: A queue object must be passed since the handler does not set a default queue implementation. Set maxsize: -1
to make the queue unlimited.
Example Usage
Just load the configuration file and start logging.
File: test_logger.py
import logging.config
import yaml
with open("logging.yaml", "r") as config_file:
logging_config = yaml.safe_load(config_file.read())
logging.config.dictConfig(logging_config)
logger = logging.getLogger(__name__)
logger.debug("This is a debug log")
logger.info("This is an info log")
logger.warning("This is an warning log")
logger.error("This is an error log")
logger.critical("This is a critical log")
Development
Additional development and documentation dependencies can be installed using extras. It is recommended to use a virtualenv.
Use Pre-Commit Hooks
Install pre-commit hooks and dependencies:
pip install -e .[dev]
pre-commit install
pre-commit autoupdate
pre-commit run --all-files
Run Tests
Run tests from the source with Pytest:
pip install -e .[dev]
pytest -s
Generate Documentation
Generate documentation from the source with Sphinx:
pip install -e .[docs]
cd docs
mkdir -p _static _templates
make html
python -m http.server --directory build/html
Create Distribution Packages
To create a source and wheel distribution, run:
git clone git@github.com:zobayer1/logging-extras.git
python -m pip install wheel
python setup.py clean sdist bdist_wheel
Note: This project uses setuptools-scm
to generate build versions from git tags. Build system will raise errors if you are trying to build packages outside a git repo.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for logging_extras-0.1.1b0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d287a8cc31a79f90207866a57a5a8a42c11a86c37110421d4cb020283aa4c008 |
|
MD5 | a364c3cc978c9d698a886a73fd4a1cb8 |
|
BLAKE2b-256 | 95d250e2d29a31acddba1b860493a23ab99aa2f34d35173d14a61adce21c0bc5 |