about summary refs log tree commit diff
path: root/wsgi.py
diff options
context:
space:
mode:
Diffstat (limited to 'wsgi.py')
-rw-r--r--wsgi.py28
1 files changed, 26 insertions, 2 deletions
diff --git a/wsgi.py b/wsgi.py
index ff24d78..9fb63cb 100644
--- a/wsgi.py
+++ b/wsgi.py
@@ -1,9 +1,13 @@
 """Run the application"""
+import sys
+from logging import getLogger, StreamHandler
+
+from flask import Flask
 
 from qc_app import create_app
 from qc_app.check_connections import check_db, check_redis
 
-def check_and_build_app():
+def check_and_build_app() -> Flask:
     """Setup the application for running."""
     # Setup the app
     appl = create_app()
@@ -13,8 +17,28 @@ def check_and_build_app():
     check_redis(appl.config["REDIS_URL"])
     return appl
 
+def setup_logging(appl: Flask):
+    """Setup application logging"""
+    loglevel = appl.config["LOG_LEVEL"].upper()
+
+    # Maybe call `logging.dictConfig(…)` here instead of all this stuff below
+    handler_stderr = StreamHandler(stream=sys.stderr)
+    appl.logger.addHandler(handler_stderr)
+
+    rootlogger = getLogger()
+    rootlogger.addHandler(handler_stderr)
+    rootlogger.setLevel(loglevel)
+
+    appl.logger.setLevel(loglevel)
+
 app = check_and_build_app()
 
-if __name__ == "__main__":
+if __name__ != "__main__":# Running via gunicorn
+    gunicorn_logger = getLogger("gunicorn.error")
+    app.logger.handlers = gunicorn_logger.handlers
+    app.logger.setLevel(gunicorn_logger.level)#pylint: disable=[no-member]
+
+if __name__ == "__main__":# Running via flask
     # Run the app
+    setup_logging(app)
     app.run()