aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--uploader/__init__.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/uploader/__init__.py b/uploader/__init__.py
index 266495c..2d731af 100644
--- a/uploader/__init__.py
+++ b/uploader/__init__.py
@@ -1,5 +1,6 @@
"""The Quality-Control Web Application entry point"""
import os
+import sys
import logging
from pathlib import Path
@@ -24,6 +25,33 @@ def override_settings_with_envvars(
app.config[setting] = os.environ.get(setting) or app.config[setting]
+def __log_gunicorn__(app: Flask) -> Flask:
+ """Set up logging for the WSGI environment with GUnicorn"""
+ logger = logging.getLogger("gunicorn.error")
+ app.logger.handlers = logger.handlers
+ app.logger.setLevel(logger.level)
+ return app
+
+
+def __log_dev__(app: Flask) -> Flask:
+ """Set up logging for the development environment."""
+ stderr_handler = logging.StreamHandler(stream=sys.stderr)
+ app.logger.addHandler(stderr_handler)
+
+ root_logger = logging.getLogger()
+ root_logger.addHandler(stderr_handler)
+ root_logger.setLevel(app.config["LOG_LEVEL"])
+
+ return app
+
+
+def setup_logging(app: Flask) -> Flask:
+ """Set up logging for the application."""
+ software, *_version_and_comments = os.environ.get(
+ "SERVER_SOFTWARE", "").split('/')
+ return __log_gunicorn__(app) if bool(software) else __log_dev__(app)
+
+
def create_app():
"""The application factory"""
app = Flask(__name__)
@@ -42,6 +70,8 @@ def create_app():
# Silently ignore secrets if the file does not exist.
app.config.from_pyfile(secretsfile)
+ setup_logging(app)
+
# setup jinja2 symbols
app.add_template_global(lambda : request.url, name="request_url")
app.add_template_global(authserver_authorise_uri)