This library provides Python logging formatters to output JSON, 2 formatters are specific for Logstash message format version 0 or 1.
Using pip:
pip install json-logging-py
From source:
python setup.py install
The name of the library is jsonlogging
, it provides 3 formatters:
{ "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" }
{ "@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" }
{ "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" }
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"]})