A simple logging in JSON
Project description
plain-json-logging is a simple logging for a JSON data.
Installation:
$ pip install plain-json-logging
Usage:
from plain_json_logging import PlainJsonLogging
logging = new PlainJsonLogging()
logging.error('this is error.)
logging.warn('this is warn.')
logging.info(
'foo'
).info(
'bar'
).info(
'baz'
)
The result is found in stderr like this:
{ "timestamp": "2020-01-10T00:06:24.855159", "level": "ERROR", "message": "this is error."}
{ "timestamp": "2020-01-10T00:06:24.855159", "level": "WARN", "message": "this is warn."}
{ "timestamp": "2020-01-10T00:06:24.855159", "level": "INFO", "message": "foo"}
{ "timestamp": "2020-01-10T00:06:24.855159", "level": "INFO", "message": "bar"}
{ "timestamp": "2020-01-10T00:06:24.855159", "level": "INFO", "message": "baz"}
Options:
from plain_json_logging import PlainJsonLogging
logging = new PlainJsonLogging(
file=sys.stdout,
strftime='%Y-%m-%d %H:%M:%S.%f%z',
timezone='America/Chicago',
timedelta=+540, # 9 hours
timestampname='@timestamp',
messagename='@message',
levelname='lev',
levelinfo=0,
levelwarn=1,
levelerror=2,
constextra={ name: 'Example' }
)
The following parameters can modify how the logging behaves:
- file:
the writable file object. Default: sys.stderr.
- strftime:
the format. Defalut: datetime.datetime default.
- timezone:
the TZ database name. Default: UTC.
- timedelta:
the timedelta. The minute is a unit. Default: 0.
- timestampname:
the name for timestamp. Default: timestamp.
- messagename:
the name for message. Default: message.
- levelname:
the name for level. Default: level.
- levelinfo:
the value for the level info. Default: INFO.
- levelwarn:
the value for the level warn. Default: WARN.
- levelerror:
the value for the level error. Default: ERROR.
- constextra:
the default additional items for each log (the value must be a dictionary object): Default: None.
API:
PlainJsonLogging has the following three methods:
info
warn
error
All the methods returns the PlainJsonLogging instance itself. Therefore, method chaining can be used for logging:
from plain_json_logging import PlainJsonLogging
logging = new PlainJsonLogging()
logging.info(
'foo'
).info(
'bar'
).info(
'baz'
)
Extra Payload:
All the methods can receives extra payload.
from plain_json_logging import PlainJsonLogging
logging = new PlainJsonLogging(
file=sys.stdout,
strftime='%Y-%m-%d %H:%M:%S.%f%z',
timezone='Asia/Tokyo',
timedelta=0,
timestampname='@timestamp',
messagename='@message',
levelname='lev',
levelinfo=0,
levelwarn=1,
levelerror=2,
constextra={ name: 'Example' },
)
logging.info('this is info.', { 'infoData': 'this is a extra payload for info.'})
logging.warn('this is warn.', { 'warnData': 'this is a extra payload for warn.'})
logging.error('this is error.', { 'errData': 'this is a extra payload for error.'})
The result is found in stdout like this:
{"@timestamp": "2020-01-13 07:17:06.370000+0900", "lev": 0, "@message": "this is info.", "name": "Example", "infoData": "this is a extra payload for info."}
{"@timestamp": "2020-01-13 07:17:06.370000+0900", "lev": 1, "@message": "this is warn.", "name": "Example", "warnData": "this is a extra payload for warn."}
{"@timestamp": "2020-01-13 07:17:06.370000+0900", "lev": 2, "@message": "this is error.", "name": "Example", "errData": "this is a extra payload for error."}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for plain_json_logging-0.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f048edbf848a731ea12cd77d29c64d38cafe7f60eaf1f6428bacbd3ebc35649 |
|
MD5 | f5718ae341cbaed738d2e6e4ba3c3b3e |
|
BLAKE2b-256 | c601feafc85e9413c71fcaf0eb2bf3bd1a6279af6e8187abff2190b6fd7e4b82 |
Hashes for plain_json_logging-0.4.0-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70f551c20966dd13253707b122c8b9534a93829b9ba9cc1fa3de60734b9d40aa |
|
MD5 | 7e0879ed9dc548f4e2509b55efff24dc |
|
BLAKE2b-256 | 255fce540a78d75807252283aa16ccd11eaea2e19852cb14725ed5f92d8f607d |