Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cs91chris/flask_logify
Advanced Logging configuration for flask application based on configuration file (json, yaml), disable logging for route with filters and log message as json
https://github.com/cs91chris/flask_logify
api configuration flask json-configuration json-logger logger-middleware logging syslog-messages yaml-configuration
Last synced: 3 months ago
JSON representation
Advanced Logging configuration for flask application based on configuration file (json, yaml), disable logging for route with filters and log message as json
- Host: GitHub
- URL: https://github.com/cs91chris/flask_logify
- Owner: cs91chris
- License: mit
- Archived: true
- Created: 2019-01-09T18:12:54.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2022-02-25T23:53:08.000Z (almost 3 years ago)
- Last Synced: 2024-03-15T01:55:29.911Z (9 months ago)
- Topics: api, configuration, flask, json-configuration, json-logger, logger-middleware, logging, syslog-messages, yaml-configuration
- Language: Python
- Homepage:
- Size: 79.1 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
- jimsghstars - cs91chris/flask_logify - Advanced Logging configuration for flask application based on configuration file (json, yaml), disable logging for route with filters and log message as json (Python)
README
Flask-Logify
==============|version|
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:
1. ``LogTextBuilder``: message as plain text (configurable).
2. ``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 <./flask_logify/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 <./flask_logify/example/test.py>`__.Quickstart
~~~~~~~~~~Install ``flask_logify`` using ``pip``:
::
$ pip install Flask-Logify
.. _section-1:
Example usage
^^^^^^^^^^^^^An example of log file configuration is under example folder.
Only yaml or json format are supported.
.. code:: python
from flask import Flask
from flask_logify import FlaskLoggingapp = 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
.. _section-2:
Configuration
^^^^^^^^^^^^^
Base configuration keys:1. ``LOGGING``: *(default: None)* dict logging configuration
2. ``LOG_FILE_CONF``: *(default: None)* absolute path of configuration file (has priority on LOGGING)
3. ``LOG_APP_NAME``: *(default: flask)* the ident of the record used by syslog
4. ``LOG_LOGGER_NAME``: *(default: flask-development)* usually is {LOG_APP_NAME}-{FLASK_ENV}
5. ``REQUEST_ID_HEADER``: *(default: X-Request-ID)* request id header key
6. ``LOG_BUILDER``: *(default: text)* log builder implementation (text, json)Text and JSON builder configuration keys:
1. ``LOG_REQ_HEADERS``: *(default: [])* request headers to dump always
2. ``LOG_RESP_HEADERS``: *(default: [])* response headers to dump always
3. ``LOG_REQ_SKIP_DUMP``: *(default: not DEBUG)* if true dump of request body and headers are skipped
4. ``LOG_RESP_SKIP_DUMP``: *(default: DEBUG)* if true dump of response body and headers are skippedText builder only:
1. ``LOG_RESP_FORMAT``: *(default: "OUTGOING RESPONSE for {address} at {path}: {level} STATUS {status}{headers}{body}")*
log message format for response
2. ``LOG_REQ_FORMAT``: *(default: "INCOMING REQUEST: {address} {method} {scheme} {path}{headers}{body}")*
log message format for requestLicense MIT
.. |version| image:: https://pypip.in/version/flask_logify/badge.png