about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gn3/app.py4
-rw-r--r--gn3/loggers.py24
2 files changed, 22 insertions, 6 deletions
diff --git a/gn3/app.py b/gn3/app.py
index 6f09eb5..864ae99 100644
--- a/gn3/app.py
+++ b/gn3/app.py
@@ -11,7 +11,7 @@ from typing import Union
 from flask import Flask
 from flask_cors import CORS  # type: ignore
 
-from gn3.loggers import loglevel, setup_app_handlers, setup_modules_logging
+from gn3.loggers import loglevel, setup_app_logging, setup_modules_logging
 from gn3.api.gemma import gemma
 from gn3.api.rqtl import rqtl
 from gn3.api.general import general
@@ -82,7 +82,7 @@ def create_app(config: Union[Dict, str, None] = None) -> Flask:
         app.config.from_envvar("GN3_SECRETS")
     # END: SECRETS
     verify_app_config(app)
-    setup_app_handlers(app)
+    setup_app_logging(app)
     setup_modules_logging(loglevel(app), ("gn_libs.mysqldb",))
     # DO NOT log anything before this point
     logging.info("Guix Profile: '%s'.", os.environ.get("GUIX_PROFILE"))
diff --git a/gn3/loggers.py b/gn3/loggers.py
index 311ea58..df213fa 100644
--- a/gn3/loggers.py
+++ b/gn3/loggers.py
@@ -1,4 +1,5 @@
 """Setup loggers"""
+import os
 import sys
 import logging
 from logging import StreamHandler
@@ -17,12 +18,27 @@ def setup_modules_logging(level, modules):
         _logger.setLevel(level)
 
 
-def setup_app_handlers(app):
-    """Setup the logging handlers for the application `app`."""
-    # ========== Setup handlers ==========
+def __add_default_handlers__(app):
+    """Add some default handlers, if running in dev environment."""
     stderr_handler = StreamHandler(stream=sys.stderr)
     app.logger.addHandler(stderr_handler)
-    # ========== END: Setup handlers ==========
     root_logger = logging.getLogger()
     root_logger.addHandler(stderr_handler)
     root_logger.setLevel(loglevel(app))
+
+
+def __add_gunicorn_handlers__(app):
+    """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 setup_app_logging(app):
+    """Setup the logging handlers for the application `app`."""
+    software, *_version_and_comments = os.environ.get(
+        "SERVER_SOFTWARE", "").split('/')
+    return (__add_gunicorn_handlers__(app)
+            if bool(software)
+            else __add_default_handlers__(app))