A simple JSON logger, used for structured logging
Project description
yet-another-json-logger

Yet another JSON logger.
Complete with opinionated decisions and hardcoded personal preferences.
Usage
import logging
from yajl import JsonFormatter
json_handler = logging.FileHandler('log.json')
json_handler.setFormatter(JsonFormatter())
logger = logging.getLogger(__name__)
logger.addHandler(json_handler)
logger.setLevel(logging.INFO)
logger.info('Alice says %r', 'hi!')
try:
1 / 0
except ZeroDivisionError:
logger.exception('Bob divided by zero!')
Will result in log.json
containing:
{"hostname": "alen-dev-vm", "pwd": "/mnt/alen/dev/yet-another-json-logger", "user": "alen", "name": "__main__", "module": "test", "level": {"name": "INFO", "number": 20}, "file": {"path": "/mnt/alen/dev/yet-another-json-logger/test.py", "filename": "test.py", "line": 12, "func": "<module>"}, "timestamp": {"abs": 1618609778.928479, "rel": 839.9991989135742}, "proc": {"id": 36424, "name": "MainProcess"}, "thread": {"id": 24544, "name": "MainThread"}, "message": "Alice says 'hi!'"}
{"hostname": "alen-dev-vm", "pwd": "/mnt/alen/dev/yet-another-json-logger", "user": "alen", "name": "__main__", "module": "test", "level": {"name": "ERROR", "number": 40}, "file": {"path": "/mnt/alen/dev/yet-another-json-logger/test.py", "filename": "test.py", "line": 16, "func": "<module>"}, "timestamp": {"abs": 1618609778.928479, "rel": 839.9991989135742}, "proc": {"id": 36424, "name": "MainProcess"}, "thread": {"id": 24544, "name": "MainThread"}, "message": "Bob divided by zero!\nTraceback (most recent call last):\n File \"/mnt/alen/dev/yet-another-json-logger/test.py\", line 14, in <module>\n 1 / 0\nZeroDivisionError: division by zero", "exception": {"type": "builtins.ZeroDivisionError", "str": "division by zero", "traceback": " File \"/mnt/alen/dev/yet-another-json-logger/test.py\", line 14, in <module>\n 1 / 0\n"}}
or, if prettified:
{
"hostname": "alen-dev-vm",
"pwd": "/mnt/alen/dev/yet-another-json-logger",
"user": "alen",
"name": "__main__",
"module": "test",
"level": {
"name": "INFO",
"number": 20
},
"file": {
"path": "/mnt/alen/dev/yet-another-json-logger/test.py",
"filename": "test.py",
"line": 12,
"func": "<module>"
},
"timestamp": {
"abs": 1618609778.928479,
"rel": 839.9991989135742
},
"proc": {
"id": 36424,
"name": "MainProcess"
},
"thread": {
"id": 24544,
"name": "MainThread"
},
"message": "Alice says 'hi!'"
}
{
"hostname": "alen-dev-vm",
"pwd": "/mnt/alen/dev/yet-another-json-logger",
"user": "alen",
"name": "__main__",
"module": "test",
"level": {
"name": "ERROR",
"number": 40
},
"file": {
"path": "/mnt/alen/dev/yet-another-json-logger/test.py",
"filename": "test.py",
"line": 16,
"func": "<module>"
},
"timestamp": {
"abs": 1618609778.928479,
"rel": 839.9991989135742
},
"proc": {
"id": 36424,
"name": "MainProcess"
},
"thread": {
"id": 24544,
"name": "MainThread"
},
"message": "Bob divided by zero!\nTraceback (most recent call last):\n File \"/mnt/alen/dev/yet-another-json-logger/test.py\", line 14, in <module>\n 1 / 0\nZeroDivisionError: division by zero",
"exception": {
"type": "builtins.ZeroDivisionError",
"str": "division by zero",
"traceback": " File \"/mnt/alen/dev/yet-another-json-logger/test.py\", line 14, in <module>\n 1 / 0\n"
}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for yet-another-json-logger-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d75a0b3354317d576c5795d7e1f41688370115d29b07ae4fae68b30e58fa2044 |
|
MD5 | 3ffc109e8c6a752dbfdabc5f1c1a5330 |
|
BLAKE2b-256 | bc3f770c0acd4dad187fad981ecebcc279546d96472c49bcd91baf1ff7dc1790 |
Close
Hashes for yet_another_json_logger-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21a85db605805eba403a225bea7df2beb09e6bda6ce9c0703c65d6da0353d86a |
|
MD5 | 5425d2d9ff045139061151881fa12fa5 |
|
BLAKE2b-256 | 5c6b2432a7178c40701434cbf95d2e2ca1f40f3338ff2fd77eb61dae14fa8b21 |