json-logging-py

JSON / Logstash formatters for Python logging


Keywords
json, logging, logstash
License
MIT
Install
pip install json-logging-py==0.2

Documentation

JSON logging for Python PyPi version

This library provides Python logging formatters to output JSON, 2 formatters are specific for Logstash message format version 0 or 1.

Installation

Using pip:

pip install json-logging-py

From source:

python setup.py install

Usage

The name of the library is jsonlogging, it provides 3 formatters:

JSONFormatter

{
    "tags": [
        "env=prod",
        "role=www"
    ],
    "timestamp": "2015-09-22T22:40:56.178715Z",
    "level": "ERROR",
    "host": "server-01.example.com",
    "path": "example.py",
    "message": "hello world!",
    "logger": "root"
}

LogstashFormatterV0

{
    "@source": "JSON://server-01.example.com/example.py",
    "@source_host": "server-01.example.com",
    "@message": "hello world!",
    "@tags": [
        "env=prod",
        "role=www"
    ],
    "@fields": {
        "logger": "root",
        "levelname": "ERROR"
    },
    "@timestamp": "2015-09-22T22:42:02.094525Z",
    "@source_path": "example.py",
    "@type": "JSON"
}

LogstashFormatterV1

{
    "host": "server-01.example.com",
    "logger": "root",
    "type": "JSON",
    "tags": [
        "env=prod",
        "role=www"
    ],
    "path": "example.py",
    "@timestamp": "2015-09-22T22:43:11.966558Z",
    "@version": 1,
    "message": "hello world!",
    "levelname": "ERROR"
}

Python example

import logging
import jsonlogging


logger = logging.getLogger()

logHandler = logging.StreamHandler()

# You can also use LogstashFormatterV0 or LogstashFormatterV1
formatter = jsonlogging.JSONFormatter(
    hostname="server-01.example.com"
    tags=["env=prod", "role=www"],
    indent=4)
logHandler.setFormatter(formatter)

logger.addHandler(logHandler)

# You can pass additional tags
logger.error('hello world!', extra={"tags": ["hello=world"]})