Logging configuration for flask application
Project description
Advanced Logging configuration for flask application based on yaml or json file. See logging.config
NOTE: If you want to use flask_logify.handlers.FlaskSysLogHandler you must init this extension with an app context.
The dump of request or response are made by builders, there are two concrete implementations:
LogTextBuilder: message as plain text (configurable).
LogJSONBuilder: message as json format.
You can create your own builder by extending class LogBuilder. In order to get the correct remote address you can override LogBuilder.get_remote_address method or you can inject a function in LogBuilder constructor.
See example usage in example/test.py.
FlaskLogging as a decorator attribute with which you can disable log messages for a specific route, passing a logging filter to it. For example you want disable log for health check endpoint. See example/text.py.
Quickstart
Install flask_logify using pip:
$ pip install Flask-Logify
Example usage
An example of log file configuration is under example folder.
Only yaml or json format are supported.
from flask import Flask
from flask_logify import FlaskLogging
app = Flask(__name__)
app.config['LOG_FILE_CONF'] = 'log.yaml'
app.config['LOG_LOGGER_NAME'] = 'flask-development'
logging = FlaskLogging()
with app.app_context():
logging.init_app(app)
app.run()
Go to http://127.0.0.1:5000/ and see log messages like configured
Configuration
Base configuration keys:
LOGGING: (default: None) dict logging configuration
LOG_FILE_CONF: (default: None) absolute path of configuration file (has priority on LOGGING)
LOG_APP_NAME: (default: flask) the ident of the record used by syslog
LOG_LOGGER_NAME: (default: flask-development) usually is {LOG_APP_NAME}-{FLASK_ENV}
REQUEST_ID_HEADER: (default: X-Request-ID) request id header key
LOG_BUILDER: (default: text) log builder implementation (text, json)
Text and JSON builder configuration keys:
LOG_REQ_HEADERS: (default: []) request headers to dump always
LOG_RESP_HEADERS: (default: []) response headers to dump always
LOG_REQ_SKIP_DUMP: (default: not DEBUG) if true dump of request body and headers are skipped
LOG_RESP_SKIP_DUMP: (default: DEBUG) if true dump of response body and headers are skipped
Text builder only:
LOG_RESP_FORMAT: (default: “OUTGOING RESPONSE for {address} at {path}: {level} STATUS {status}{headers}{body}”) log message format for response
LOG_REQ_FORMAT: (default: “INCOMING REQUEST: {address} {method} {scheme} {path}{headers}{body}”) log message format for request
License MIT
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
File details
Details for the file Flask-Logify-2.4.4.tar.gz
.
File metadata
- Download URL: Flask-Logify-2.4.4.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28e1c65914d5b3eacb3b97626bdaf1c9741a617ac71ba35f5c3bc528a56b296b |
|
MD5 | 066bdd0aa5405881ee5f8829cdf8212c |
|
BLAKE2b-256 | feab4b23584d44498bc17e0874611aa70f19f101f1435b11200ebc9f64bd96d9 |