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/text.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 PROGRAM field of the log messages
LOG_LOGGER_NAME: (default: flask-development) usually is {LOG_APP_NAME}-{FLASK_ENV}
REQUEST_ID_HEADER: (default: X-Request-ID) request id header key
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_SKIP_DUMP: (default: not DEBUG) if true dump of body and headers are skipped
Text builder only:
LOG_RESP_FORMAT: (default: “{level} STATUS {status}nn{headers}nn{body}n”) log message format for response
LOG_REQ_FORMAT: (default: “{addr} {method} {scheme} {path}nn{headers}nn{body}n”) 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.