mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	wsgi.py: Fix broken error ouput for django.setup() call.
It's common for a broken settings.py file to result in Django not starting, thus never writing to `/var/log/zulip/errors.log`. Such behavior can be discouraging when the server 500s without a traceback to accompany it. To fix this, we simply catch any exceptions in django.setup(), if raised, and log the exception appropriately. Comments tweaked by tabbott. Closes: #7032.
This commit is contained in:
		@@ -21,8 +21,23 @@ sys.path.append(BASE_DIR)
 | 
			
		||||
import scripts.lib.setup_path_on_import
 | 
			
		||||
 | 
			
		||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zproject.settings")
 | 
			
		||||
 | 
			
		||||
import django
 | 
			
		||||
django.setup()  # We need to call setup to load applications.
 | 
			
		||||
try:
 | 
			
		||||
    django.setup()
 | 
			
		||||
except Exception as e:
 | 
			
		||||
    # If /etc/zulip/settings.py contains invalid syntax, Django
 | 
			
		||||
    # initialization will fail in django.setup().  In this case, our
 | 
			
		||||
    # normal configuration to logs errors to /var/log/zulip/errors.log
 | 
			
		||||
    # won't have been initialized.  Since it's really valuable for the
 | 
			
		||||
    # debugging process for a Zulip 500 error to always be "check
 | 
			
		||||
    # /var/log/zulip/errors.log", we log to that file directly here.
 | 
			
		||||
    import logging
 | 
			
		||||
    logging.basicConfig(filename='/var/log/zulip/errors.log', level=logging.INFO,
 | 
			
		||||
                        format='%(asctime)s %(levelname)s %(name)s %(message)s')
 | 
			
		||||
    logger = logging.getLogger(__name__)
 | 
			
		||||
    logger.exception(e)
 | 
			
		||||
    raise
 | 
			
		||||
 | 
			
		||||
# Because import_module does not correctly handle safe circular imports we
 | 
			
		||||
# need to import zerver.models first before the middleware tries to import it.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user