From ef13500d1ae7052b22c920fb1ab0c4bcb826a101 Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Wed, 8 May 2019 13:05:01 -0700 Subject: [PATCH] Refactor ConsoleLog (#7428) --- CONTRIBUTING.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4fc90570bb..e620e6afe8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -326,6 +326,31 @@ cd superset FLASK_ENV=development flask run -p 8088 --with-threads --reload --debugger ``` +#### Logging to the browser console + +This feature is only available on Python 3. When debugging your application, you can have the server logs sent directly to the browser console using the [ConsoleLog](https://github.com/betodealmeida/consolelog) package. You need to mutate the app, by adding the following to your `config.py` or `superset_config.py`: + +```python +from console_log import ConsoleLog + +def FLASK_APP_MUTATOR(app): + app.wsgi_app = ConsoleLog(app.wsgi_app, app.logger) +``` + +Then make sure you run your WSGI server using the right worker type: + +```bash +FLASK_ENV=development gunicorn superset:app -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" -b 127.0.0.1:8088 --reload +``` + +You can log anything to the browser console, including objects: + +```python +from superset import app +app.logger.error('An exception occurred!') +app.logger.info(form_data) +``` + ### Frontend Assets Frontend assets (JavaScript, CSS, and images) must be compiled in order to properly display the web UI. The `superset/assets` directory contains all NPM-managed front end assets. Note that there are additional frontend assets bundled with Flask-Appbuilder (e.g. jQuery and bootstrap); these are not managed by NPM, and may be phased out in the future.