Skip to main content

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.

Files for plain-json-logging, version 0.4.0
Filename, size File type Python version Upload date Hashes
Filename, size plain_json_logging-0.4.0-py2-none-any.whl (3.9 kB) File type Wheel Python version py2 Upload date Hashes View
Filename, size plain_json_logging-0.4.0-py3-none-any.whl (3.9 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page