aboutsummaryrefslogtreecommitdiff
path: root/uploader
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-08-08 15:29:05 -0500
committerFrederick Muriuki Muriithi2024-08-08 15:29:44 -0500
commit494f138387216757b61b8c2d3b4f98ecc197d18c (patch)
treefff9104316a7e32406e71af441df4597db45af42 /uploader
parent0087e2b063db4ebc4990e94f5e0ed2253d8b1da4 (diff)
downloadgn-uploader-494f138387216757b61b8c2d3b4f98ecc197d18c.tar.gz
Set up logging for the application.
Set up logging for the application to help with debugging issues.
Diffstat (limited to 'uploader')
-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)