aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2025-08-13 13:37:52 -0500
committerFrederick Muriuki Muriithi2025-08-13 13:37:52 -0500
commit9c8ff1e6e1b1e71806b2892ec42de5b73fb1180e (patch)
treee423e2dfd4e72d718fcfb4c6c3d07c22d3986d6b
parent1c4fc8e0ef9f38e8a34b13aa7045bbdc9901b83a (diff)
downloadgenenetwork3-9c8ff1e6e1b1e71806b2892ec42de5b73fb1180e.tar.gz
Improve logging by setting up handlers appropriately for each env.
-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))