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
Metadata
Release files for Flask-Logify 2.4.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| Flask-Logify-2.4.5.tar.gz | 8.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| Flask_Logify-2.4.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.2 kB
Release files / Flask-Logify-2.4.5.tar.gz
| Download URL | Flask-Logify-2.4.5.tar.gz |
|---|---|
| Size | 8.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
db098af6ef6ac78d9a24468d630fab8ac19c4d1e384031f9452bba8c0f650ecf
|
|
BLAKE2b-256 checksum How to use checksums |
991696e889fd2d907f62d3e208c648f113c3c8448648cd1e05a50c1367b9a299
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / Flask_Logify-2.4.5-py3-none-any.whl
| Download URL | Flask_Logify-2.4.5-py3-none-any.whl |
|---|---|
| Size | 11.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c714125d8d45b6f3ce2944a4641086afd6528cd2bba8a035d9e14787d8f5bdff
|
|
BLAKE2b-256 checksum How to use checksums |
d74312ac34c471bd490a81549be5473e2a0a3475c5017480be358a0aeaff35f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|