blob: 952d30f3f440d4a7af2e6df2a9d2200166c814a4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
"""Generalised setup for logging for Genenetwork systems."""
import os
import logging
from flask import Flask
logging.basicConfig(
encoding="utf-8",
format="%(asctime)s — %(filename)s:%(lineno)s — %(levelname)s: %(message)s")
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."""
root_logger = logging.getLogger()
root_logger.setLevel(
app.config.get("LOG_LEVEL", app.config.get("LOGLEVEL", "WARNING")))
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 setup_modules_logging(app_logger: logging.Logger, modules: tuple[str, ...]):
"""Setup module-level loggers to the same log-level as the application."""
loglevel = logging.getLevelName(app_logger.getEffectiveLevel())
for module in modules:
_logger = logging.getLogger(module)
_logger.setLevel(loglevel)
|