Skip to content
/ logjson Public

A Python logging Handler for JSON logs (with LogStash support)

License

Notifications You must be signed in to change notification settings

cjrh/logjson

Repository files navigation

https://travis-ci.org/cjrh/logjson.svg?branch=master https://coveralls.io/repos/github/cjrh/logjson/badge.svg?branch=master

logjson

Goal: easily generate structured JSON logging. logstash mode is optional.

import logging
import logjson
logger = logging.getLogger('blah')

handler = logging.StreamHandler()
handler.setFormatter(
    logjson.JSONFormatter(pretty=True)
)
logger.addHandler(handler)

logger.info('hi %s %s!', 'you', 'there')

Output:

{
  "name": "blah",
  "msg": "hi %s %s!",
  "args": [
    "you",
    "there"
  ],
  "levelname": "INFO",
  "levelno": 20,
  "pathname": "<snip>",
  "filename": "test_main.py",
  "module": "test_main",
  "exc_text": null,
  "stack_info": null,
  "lineno": 17,
  "funcName": "test_main",
  "created": 1511750128.6285746,
  "msecs": 628.5746097564697,
  "relativeCreated": 23.08201789855957,
  "thread": 139929130264384,
  "threadName": "MainThread",
  "processName": "MainProcess",
  "process": 18460,
  "message": "hi you there!",
  "created_iso": "2017-11-27T02:35:28.628575+00:00"
}

Logstash mode is only one param away:

logger = logging.getLogger('ls')
handler = logging.StreamHandler()
handler.setFormatter(
    logjson.JSONFormatter(pretty=True, logstash_mode=True)
)
logger.addHandler(handler)
logger.info('logstash test')

Output:

{
  "@message": "logstash test",
  "@source_host": "localhost.localdomain",
  "@timestamp": "2017-11-27T02:35:28.631275+00:00",
  "@fields": {
    "name": "ls",
    "msg": "logstash test",
    "args": [],
    "levelname": "INFO",
    "levelno": 20,
    "pathname": "<snip>",
    "filename": "test_main.py",
    "module": "test_main",
    "exc_text": null,
    "stack_info": null,
    "lineno": 42,
    "funcName": "test_logstash",
    "created": 1511750128.631275,
    "msecs": 631.274938583374,
    "relativeCreated": 25.782346725463867,
    "thread": 139929130264384,
    "threadName": "MainThread",
    "processName": "MainProcess",
    "process": 18460
  }
}

About

A Python logging Handler for JSON logs (with LogStash support)

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages