Skip to main content

Custom formatter for python-json-logger to iso8601 format the timestamp. Also provides default console and file loggers

Project description

jsonloggeriso8601datetime Package

This package is mainly about providing an out of the box configuration to enable the builtin Python logging package to generate logs as JSON.
It starts with the package python-json-logger and adds a simple custom formatter to format the timestamp to comply with ISO8601 formats. It also provides a default config to log to the console and to a log file. After installing the package, run

$ jlidtexample 

to see the default console logging output. look in logs/jsonLogs.log to see the default file logging output.

If you're happy with the default configuration, the basic use case is all you need. If you want to change the configuration (e.g., add more properties to the file output, change default logging levels), pass in a modified dict to setConfig(). You can start with the default config using the script jlidtdefaultconfig, redirect to a file, then edit that file accordingly. For example:

$ jlidtdefaultconfig > myCustomConfig.py

edit myConfig.py to give the dict a variable name, then import myConfig, name you gave your dict variable, to your project and use that dict in setConfig.

For the log file output, the package will ensure the directory exists before trying to write to the log file. This is done by the MakedirFileHandler class. Check out the wrappers.py module in jsonloggeriso8601datetime package if you're curious.

Configuration

The file jsonloggerdictconfig.py, in the package's directory contains default configuration for logging to stdout with minimal information, not JSON formatted. It also configures a handler to log to a file with much more information and log statements are JSON formatted. As noted above, you can see the values of the default configuration by running jlidtdefaultconfig. I've created this default configuration with screen readers in mind. Logging to the console is minimized to avoid a lot of screen reader chatter. Logging to a file is maximized and formatted to support other tools processing those logs and possibly presenting the information in a more accessible way. Also, if logs are to be processed by any anomaly detection systems, JSON is probably best.

You might notice there's a gunicorn logger in the config file. I added that to get gunicorn to work with this default config. There might be a better way to do this. I stopped looking for solutions once I got this working with gunicorn.

Dependencies

See the requirements.txt file for the details of packages this package requires. Short answer though is python-json-logger 2.0.4 is the only requirement at time of writing.

Scripts

Two very small scripts (entry points) are shipped with this package.

jlidtdefaultconfig

and

jlidtexample

should both be installed as part of the pip installation.

jlidtDefaultConfig has already been described. jlidtExample.py uses jsonloggeriso8601datetime with its default config. You can run that to determine if the default config is sufficient. It's currently set to DEBUG for both the console and file loggers. I might change that.

Wrapping It Up

If you like this functionality and want to extend it, I suggest starting with python-json-logger. The documentation there is very good and it seems to be a popular package on PyPI. You're even welcome to take my extension and add it to whatever you do to extend python-json-logger.

I built this package really for my own opinions and added it to PyPI so I could pip install it instead of copying it around to different projects. Also I can import it to the REPL and easily get logs in a file.

If others like this default config and ISO8601 timestamps, great. Enjoy the package and feel free to open issues on github.

Cheers!!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonloggeriso8601datetime-1.0.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file jsonloggeriso8601datetime-1.0.0.tar.gz.

File metadata

File hashes

Hashes for jsonloggeriso8601datetime-1.0.0.tar.gz
Algorithm Hash digest
SHA256 84edf7d81b31cb44d54264175a6a7442b5c09353db3e0557fb6ae4c2a39f719d
MD5 41e9bd9a25728529479e075d9325a41c
BLAKE2b-256 f29b05cbb8d0dfef2ec1f64fec09f84d1ff8d5dac6e023ca3822a40d3e5b7967

See more details on using hashes here.

File details

Details for the file jsonloggeriso8601datetime-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for jsonloggeriso8601datetime-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 688574685d9339368454f9ae2afe23afacfea570b73dd2d4bfa0c80e578b4187
MD5 0f33d233ae7260390e52c1ce57161e5e
BLAKE2b-256 71bb946692eaba0d940a8be78f7bb14c170b28f05f6c95ba84543ccb1d98655d

See more details on using hashes here.

Supported by

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