2014-12-29 3 views
11

Я запускаю приложение django с gunicorn, и я не вижу сообщений в журнале, которые я извиняю.Вход в Django и gunicorn

Вот код, который записывает журналы:

logger = logging.getLogger(__name__) 

def home_page(request): 
    logger.warning('in home page') 

(примечание: этот код, безусловно, работает, так как это мнение, что приводит к домашней странице)

Это моя конфигурация журналов из настроек .py:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
      'stream': sys.stdout, 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['console'], 
     }, 
    }, 
    'root': {'level': 'INFO'}, 
} 

Я бегу gunicorn как демон со следующими аргументами:

--access-logfile ../access.log --error-logfile --log-level debug ../error.log 

Оба access.log и error.log создаются и заполняются сообщениями об увольнении, но я не вижу сообщений, которые пишу.

Thanks

ответ

13

Я решил свою проблему. Предоставляя детали, чтобы помочь кому-то с подобной проблемой.

Решено не смешиваться с журналами для стрельбы из ружья и django и создавать отдельный файл журнала для django.

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
     }, 
     'logfile': { 
      'level':'DEBUG', 
      'class':'logging.FileHandler', 
      'filename': BASE_DIR + "/../logfile", 
     }, 
    }, 
    'root': { 
     'level': 'INFO', 
     'handlers': ['console', 'logfile'] 
    }, 
} 

При такой конфигурации каждое сообщение записывается с выраженностью> = INFO будет записан в файл «LOGFILE» расположен в непосредственной близости от исходного каталога.

+0

Спасибо! У меня возникли проблемы с поиском базового примера, подобного тому, который работал с пулеметом. – mirth23

+0

Это также написано на stderr, не так ли? –

+1

Я думаю, что это фактически записано в stderr по умолчанию. Чтобы записать его также на стандартный вывод, вы должны добавить еще один обработчик с указанным потоком как это: «console_stdout»: { «уровень»: «DEBUG», «поток»: sys.stdout, «класс»: ' logging.StreamHandler ' } –

Смежные вопросы