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
Built Distribution
Hashes for Flask_Logify-2.4.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c714125d8d45b6f3ce2944a4641086afd6528cd2bba8a035d9e14787d8f5bdff |
|
MD5 | 32981928b47413f7d9927b364ba5b637 |
|
BLAKE2b-256 | d74312ac34c471bd490a81549be5473e2a0a3475c5017480be358a0aeaff35f5 |