Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I define a settings.LOGGING so that gunicorn will find the version value it wants?

I am trying to run Gunicorn, and I am running into an error (pasted below). At present it looks like Gunicorn or one of its dependencies is attempting to read settings.LOGGING, and the settings.py file does not appear to define a settings.LOGGING.

So I'd like to know what sort of literal or other code I can add so that Gunicorn + dependencies have what they think they need.

Code paste:

(socialenv)jonathan@li393-189:~/directory$ python manage.py run_gunicorn 0.0.0.
0:8000
2013-04-14 17:40:13 [26464] [INFO] Starting gunicorn 0.17.2
2013-04-14 17:40:13 [26464] [INFO] Listening at: http://0.0.0.0:8000 (26464)
2013-04-14 17:40:13 [26464] [INFO] Using worker: sync
2013-04-14 17:40:13 [26469] [INFO] Booting worker with pid: 26469
2013-04-14 17:40:13 [26469] [ERROR] Exception in worker process:
Traceback (most recent call last):
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker
    worker.init_process()
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process
    self.wsgi = self.app.wsgi()
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 103, in wsgi
    self.callable = self.load()
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 133, in load
    return mod.make_command_wsgi_application(self.admin_media_path)
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/app/django_wsgi.py", line 113, in make_command_wsgi_application
    reload_django_settings()
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/app/django_wsgi.py", line 109, in reload_django_settings
    logging_config_func(settings.LOGGING)
  File "/usr/lib/python2.7/logging/config.py", line 777, in dictConfig
    dictConfigClass(config).configure()
  File "/usr/lib/python2.7/logging/config.py", line 503, in configure
    raise ValueError("dictionary doesn't specify a version")
ValueError: dictionary doesn't specify a version
Traceback (most recent call last):
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 485, in spawn_worker
    worker.init_process()
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 100, in init_process
    self.wsgi = self.app.wsgi()
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 103, in wsgi
    self.callable = self.load()
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/app/djangoapp.py", line 133, in load
    return mod.make_command_wsgi_application(self.admin_media_path)
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/app/django_wsgi.py", line 113, in make_command_wsgi_application
    reload_django_settings()
  File "/home/jonathan/socialenv/local/lib/python2.7/site-packages/gunicorn/app/django_wsgi.py", line 109, in reload_django_settings
    logging_config_func(settings.LOGGING)
  File "/usr/lib/python2.7/logging/config.py", line 777, in dictConfig
    dictConfigClass(config).configure()
  File "/usr/lib/python2.7/logging/config.py", line 503, in configure
    raise ValueError("dictionary doesn't specify a version")
ValueError: dictionary doesn't specify a version
2013-04-14 17:40:13 [26469] [INFO] Worker exiting (pid: 26469)
2013-04-14 17:40:13 [26464] [INFO] Shutting down: Master
2013-04-14 17:40:13 [26464] [INFO] Reason: Worker failed to boot.
(socialenv)jonathan@li393-189:~/directory$ 
like image 794
Christos Hayward Avatar asked Apr 14 '13 22:04

Christos Hayward


2 Answers

I had the same error and I fixed it by adding logging configuration to the project's settings file, I used the example from this page

https://docs.djangoproject.com/en/dev/topics/logging/

here is the code from my settings file

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'null': {
            'level': 'DEBUG',
            'class': 'logging.NullHandler',
        },
        'console':{
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'filters': [],
        }
    },
    'loggers': {
        'django': {
            'handlers': ['null'],
            'propagate': True,
            'level': 'INFO',
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
    }
}
like image 175
mcniac Avatar answered Nov 15 '22 17:11

mcniac


The easiest way is to add in settings.py:

LOGGING = {
    'version': 1,
}
like image 23
PerBeatus Avatar answered Nov 15 '22 19:11

PerBeatus