From d22244473fc550079d40de08dd83dbdd7997c087 Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Mon, 18 Feb 2019 13:34:52 -0600
Subject: [PATCH] Set up stdout logging for container

Add a logging handler for printing to stdout. For container
deployments, we remove all other logging handlers and use this
new 'console' handler only. The incantation for starting
gunicorn with supervisord now sends the access and error logs
to stdout.
---
 config/settings/base.py           | 16 ++++++++++++++--
 config/settings/container/base.py |  4 ++++
 docker/supervisord-apache2.conf   |  2 +-
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/config/settings/base.py b/config/settings/base.py
index 4725b5497..830bc433b 100644
--- a/config/settings/base.py
+++ b/config/settings/base.py
@@ -487,7 +487,14 @@ LOGGING = {
             'format': '%(asctime)s.%(msecs)03d | %(name)s | %(levelname)s | ' \
                       + '%(filename)s, line %(lineno)s | %(message)s',
             'datefmt': LOG_DATEFMT,
-        }
+        },
+        'console': {
+            'format': ('%(asctime)s.%(msecs)03d | {host} | {ip} | %(name)s | '
+                '%(levelname)s | %(filename)s, line %(lineno)s | '
+                '%(message)s').format(host=INTERNAL_HOSTNAME,
+                ip=INTERNAL_IP_ADDRESS),
+            'datefmt': LOG_DATEFMT,
+        },
     },
     'handlers': {
         'null': {
@@ -520,7 +527,12 @@ LOGGING = {
         'mail_admins': {
             'level': 'ERROR',
             'class': 'django.utils.log.AdminEmailHandler'
-        }
+        },
+        'console': {
+            'class': 'logging.StreamHandler',
+            'formatter': 'console',
+            'level': 'DEBUG',
+        },
     },
     'loggers': {
         'django': {
diff --git a/config/settings/container/base.py b/config/settings/container/base.py
index 030105479..6fa5b956b 100644
--- a/config/settings/container/base.py
+++ b/config/settings/container/base.py
@@ -106,3 +106,7 @@ EMBB_MAIL_ADDRESS = 'embb@{fqdn}.ligo.org'.format(fqdn=SERVER_FQDN)
 EMBB_SMTP_SERVER = 'localhost'
 EMBB_MAIL_ADMINS = [admin[1] for admin in ADMINS]
 EMBB_IGNORE_ADDRESSES = ['Mailer-Daemon@{fqdn}'.format(fqdn=SERVER_FQDN)]
+
+# Set up logging to stdout only
+for key in LOGGING['loggers']:
+    LOGGING['loggers'][key]['handlers'] = ['console']
diff --git a/docker/supervisord-apache2.conf b/docker/supervisord-apache2.conf
index 7e4523d7c..0ae47cd85 100644
--- a/docker/supervisord-apache2.conf
+++ b/docker/supervisord-apache2.conf
@@ -6,7 +6,7 @@ redirect_stderr=true
 priority=3
 
 [program:gracedb]
-command=/usr/local/bin/gunicorn config.wsgi:application --reload --config /app/gracedb_project/config/gunicorn_config.py
+command=/usr/local/bin/gunicorn config.wsgi:application --reload --config /app/gracedb_project/config/gunicorn_config.py --error-logfile='-' --access-logfile='-'
 directory=/app/gracedb_project
 user=gracedb
 group=www-data
-- 
GitLab