A Python package which supports global logfmt formatted logging.
Project description
Python Logfmter
A Python package which supports global logfmt formatted logging.
Install
$ pip install logfmter
Usage
Before integrating this library, you should be familiar with Python's logging functionality. I recommend reading the Basic Logging Tutorial.
This package exposes a single Logfmter
class that can be integrated into
the standard library logging system similar to any logging.Formatter
.
The provided formatter will logfmt encode all logs. Key value pairs are provided
via the extra
keyword argument or by passing a dictionary as the log message.
Basic
import logging
from logfmter import Logfmter
handler = logging.StreamHandler()
handler.setFormatter(Logfmter())
logging.basicConfig(handlers=[handler])
logging.error("hello", extra={"alpha": 1}) # at=ERROR msg=hello alpha=1
logging.error({"token": "Hello, World!"}) # at=ERROR token="Hello, World!"
Customize
You can subclass the formatter to change its behavior.
import logging
from logfmter import Logfmter
class CustomLogfmter(Logfmter):
"""
Provide a custom logfmt formatter which formats
booleans as "yes" or "no" strings.
"""
@classmethod
def format_value(cls, value):
if isinstance(value, bool):
return "yes" if value else "no"
return super().format_value(value)
handler = logging.StreamHandler()
handler.setFormatter(CustomLogfmter())
logging.basicConfig(handlers=[handler])
logging.error({"example": True}) # at=ERROR example=yes
Development
Required Software
Refer to the links provided below to install these development dependencies:
Getting Started
Setup
$ <runtimes.txt xargs -n 1 pyenv install -s
$ direnv allow
$ pip install -r requirements/dev.txt
$ pre-commit install
$ pip install -e .
Tests
Run the test suite against the active python environment.
$ pytest
Run the test suite against the active python environment and watch the codebase for any changes.
$ ptw
Run the test suite against all supported python versions.
$ tox
Publishing
Create
-
Update the version number in
logfmter/__init__.py
. -
Add an entry in
HISTORY.md
. -
Commit the changes, tag the commit, and push the tags:
$ git commit -am "v<major>.<minor>.<patch>" $ git tag v<major>.<minor>.<patch> $ git push --tags
-
Convert the tag to a release in GitHub with the history entry as the description.
Build
$ python -m build
Upload
$ twine upload dist/*
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.