Skip to main content

JSON log formatting for the Python logging module.

Project description

jsonlog

A drop-in formatter for Python's logging module that outputs messages as line delimited JSON.

While jsonlog provides it's own basicConfig method so you can get started quickly, all of it's features and classes can be used with the logging module.

Usage

You can use jsonlog as a drop-in replacement for logging:

import jsonlog

jsonlog.warning("Hello world.")

It's implemented as a log formatter, so you can use logging just like you normally would.

import jsonlog
import logging

jsonlog.basicConfig(level=jsonlog.INFO)
jsonlog.warning("Works with functions in the jsonlog module.")
logging.warning("And works with functions in the logging module.")

Configuration using jsonlog.basicConfig

The jsonlog.basicConfig function accepts slightly different parameters to logging.basicConfig. It's shown here with the defaults for each parameter.

The filename, filemode and stream parameters work the same way as their equivalents in logging.basicConfig, and as such filename and stream are exclusive.

import jsonlog

jsonlog.basicConfig(
    level=jsonlog.INFO,
    indent=None,
    keys=("time", "level", "message"),
    timespec="auto",
    # filename=None,
    # filemode="a",
    # stream=None,
)

Configuration using logging.config.dictConfig

Any of the configuration methods in logging.config can be used to configure a handler that uses jsonlog.formmatters.JSONFormatter to format records as JSON.

import logging.config

logging.config.dictConfig(
    {
        "version": 1,
        "formatters": {"json": {"()": "jsonlog.JSONFormatter"}},
        "handlers": {"stream": {"class": "logging.StreamHandler", "formatter": "json"}},
        "loggers": {"": {"handlers": ["stream"]}},
    }
)

Adding extra attributes to JSON output

Record attributes provided with extra= will be included in the JSON object.

import jsonlog
import logging

jsonlog.basicConfig()
logging.warning("User clicked a button", extra={"user": 123})
{"time": "2019-06-21T16:25:05.823190", "level": "WARNING", "message": "User clicked a button", "user": 123}

If a mapping is passed as the only positional argument, attributes from the mapping will also be included.

import jsonlog
import logging

jsonlog.basicConfig()
logging.warning("User clicked a button", {"user": 123})

Compatibility

jsonlog is written for Python 3.7 and above. Compatibility patches will be accepted for Python 3.5 and above, but patches for Python 2 will be rejected.

Authors

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

jsonlog-1.0.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

jsonlog-1.0.0-py2.py3-none-any.whl (9.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file jsonlog-1.0.0.tar.gz.

File metadata

  • Download URL: jsonlog-1.0.0.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for jsonlog-1.0.0.tar.gz
Algorithm Hash digest
SHA256 fcfb7517a9f891fa7d71a94edf676aeac2682c3e4c3abb9f3ad978ad7987a1b8
MD5 9516e3cad1fe34f23fa89d589117e284
BLAKE2b-256 b2a58f66095a08211691f07d2f02b63cba75caf553fc7b436c791a3d0796fbc0

See more details on using hashes here.

File details

Details for the file jsonlog-1.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: jsonlog-1.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for jsonlog-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 396fc102b1915b2ea88606e34b5a8470bf38af7f98fc478540f900a839804920
MD5 f626305e44b1a08f1e59b1b8e6b067f0
BLAKE2b-256 5d4c5b8c9567793c7e686aebbe2143b7815e7733c1d5cf38ae25f816df4e24fb

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