Skip to main content

Json formatter for logging

Project description

logformatjson is a library that provides a simple JSON formatter for the standard python logging package. It allows for nested arbitrary metadata to be inserted at instantiation and run time. The library is opionanted but attempts to allow most opinions to be overridden.

warning: This library is under active development. The log format and API are expected to change.


  • via pip:
pip install logformatjson


  1. basic usage - JSONFormatter can be set on any handler as your would expect:
import logging
import sys
from logformatjson import JSONFormatter

LOGGER = logging.getLogger()
log_handler = logging.StreamHandler(sys.stdout)

LOGGER.debug('this is my debug message', extra={'some_key': 'important_value'})

which produces the following json (from ipython):

  "timestamp": "2016-02-19T19:39:17.061886",
  "message": "this is my debug message",
  "levelname": "DEBUG",
  "metadata": {
    "filename": "",
    "funcName": "<module>",
    "extra": {
      "some_key": "important_value"
    "log_type": "python",
    "lineno": 11,
    "module": "test",
    "pathname": ""
  "log_version": "1.0"
  1. Adding an additional metadata in every log entry:

log_handler.setFormatter(JSONFormatter(metadata={'application_version': '1.0.0'}))

  1. Overriding the defaults at instantiation:

    • Override attributes copied or skipped from the LogRecord:
      log_handler.setFormatter(JSONFormatter(kept_attrs= ['created', ]))
      log_handler.setFormatter(JSONFormatter(skipped_attrs= ['filename', ]))
    • Override the provided json encoder:

      def my_json_encoder(obj):
        return int(obj)
      log_handler.setFormatter(JSONFormatter(json_encoder = my_json_encoder))
  2. Override the defaults at runtime:

    • Log type (intended to be mixed with extra fields):

      logger.debug('GET / HTTP/1.1', log_type='HTTP'}
  3. Extra fields:

    LOGGER.debug('this is my debug message', extra={'some_key': 'important_value'})


Tests can be run via make:

make lint
make test


Project details

Download files

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

Files for logformatjson, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size logformatjson-0.1.0.tar.gz (4.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page