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.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

plain_json_logging-0.4.0-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

plain_json_logging-0.4.0-py2-none-any.whl (3.9 kB view details)

Uploaded Python 2

File details

Details for the file plain_json_logging-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: plain_json_logging-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.1

File hashes

Hashes for plain_json_logging-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9f048edbf848a731ea12cd77d29c64d38cafe7f60eaf1f6428bacbd3ebc35649
MD5 f5718ae341cbaed738d2e6e4ba3c3b3e
BLAKE2b-256 c601feafc85e9413c71fcaf0eb2bf3bd1a6279af6e8187abff2190b6fd7e4b82

See more details on using hashes here.

File details

Details for the file plain_json_logging-0.4.0-py2-none-any.whl.

File metadata

  • Download URL: plain_json_logging-0.4.0-py2-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.1

File hashes

Hashes for plain_json_logging-0.4.0-py2-none-any.whl
Algorithm Hash digest
SHA256 70f551c20966dd13253707b122c8b9534a93829b9ba9cc1fa3de60734b9d40aa
MD5 7e0879ed9dc548f4e2509b55efff24dc
BLAKE2b-256 255fce540a78d75807252283aa16ccd11eaea2e19852cb14725ed5f92d8f607d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page