From c6350f154471ac1d24020080c0de7585d3eecc3c Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Apr 28 2018 11:40:21 +0000 Subject: [PATCH 1/3] Get logging to work. Gunicorn has been swallowing all of our log output in openshift making it impossible to know what's going on. Tested locally, this gets us output to stdout from both the flask app and the root logger. --- diff --git a/waiverdb/auth.py b/waiverdb/auth.py index 1c1d08d..4e11043 100644 --- a/waiverdb/auth.py +++ b/waiverdb/auth.py @@ -41,7 +41,7 @@ def process_gssapi_request(token): user = str(sc.initiator_name) return user, token except gssapi.exceptions.GSSError as e: - current_app.logger.error( + current_app.logger.exception( 'Unable to authenticate: failed to %s: %s' % (stage, e.gen_message())) raise Forbidden("Authentication failed") diff --git a/waiverdb/logger.py b/waiverdb/logger.py index d215084..19722e6 100644 --- a/waiverdb/logger.py +++ b/waiverdb/logger.py @@ -1,21 +1,20 @@ # SPDX-License-Identifier: GPL-2.0+ import logging -import sys -def log_to_stdout(level=logging.INFO): - fmt = '%(asctime)s [pid %(process)5d] %(name)s %(levelname)s %(message)s' - datefmt = '%Y-%m-%d %H:%M:%S' - stream_handler = logging.StreamHandler(sys.stdout) - stream_handler.setLevel(level) - stream_handler.setFormatter(logging.Formatter(fmt=fmt, datefmt=datefmt)) - logging.getLogger().addHandler(stream_handler) +def log_to_gunicorn(app): + gunicorn_logger = logging.getLogger('gunicorn.error') + # Wire up the root logger to forward to gunicorn's handlers + logging.getLogger().handlers = gunicorn_logger.handlers + logging.getLogger().setLevel(gunicorn_logger.level) + # Wire up the flask logger to forward to gunicorn's handlers + app.logger.handlers = gunicorn_logger.handlers + app.logger.setLevel(gunicorn_logger.level) def init_logging(app): - log_level = logging.DEBUG if app.debug else logging.INFO - log_to_stdout(level=log_level) + log_to_gunicorn(app) # In general we want to see everything from our own code, # but not detailed debug messages from third-party libraries. # Note that the log level on the handler above controls what From 477df3838fafc4e3583d44657d4d98ba6f7e986a Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Apr 28 2018 12:40:49 +0000 Subject: [PATCH 2/3] Remove old database before starting. --- diff --git a/Jenkinsfile b/Jenkinsfile index 0452d37..c622def 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -14,6 +14,8 @@ node('fedora') { sh 'sudo dnf -y install dnf-utils' /* Unit tests need local Postgres */ sh """ + sudo dnf -y remove postgresql-server || true + sudo rm -rf /var/lib/pgsql/ || true sudo dnf -y install postgresql-server sudo postgresql-setup --initdb sudo systemctl enable --now postgresql From 97b8c8710c4927c22c0b121f4168f34e8803c18d Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Apr 28 2018 12:40:49 +0000 Subject: [PATCH 3/3] Don't build and install manpages on el7. --- diff --git a/waiverdb.spec b/waiverdb.spec index 9fb5212..449dcef 100644 --- a/waiverdb.spec +++ b/waiverdb.spec @@ -141,6 +141,7 @@ install -m0644 \ conf/client.conf.example \ %{buildroot}%{_sysconfdir}/waiverdb/client.conf +%if 0%{?fedora} || 0%{?rhel} > 7 install -D -m0644 \ docs/_build/man/waiverdb-cli.1 \ %{buildroot}%{_mandir}/man1/waiverdb-cli.1 @@ -148,6 +149,7 @@ install -D -m0644 \ install -D -m0644 \ docs/_build/man/waiverdb.7 \ %{buildroot}%{_mandir}/man7/waiverdb.7 +%endif # Tests don't make sense here now that we require postgres to run them. #%%check @@ -184,8 +186,11 @@ install -D -m0644 \ %endif %attr(755,root,root) %{_bindir}/waiverdb-cli %config(noreplace) %{_sysconfdir}/waiverdb/client.conf + +%if 0%{?fedora} || 0%{?rhel} > 7 %{_mandir}/man1/waiverdb-cli.1* %{_mandir}/man7/waiverdb.7* +%endif %post %systemd_post %{name}.service