2017-02-08 55 views
2

我有这样的日志记录配置设置:如何在gunicorn服务器下为生产配置django日志记录?

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'formatters': { 
     'verbose': { 
      'format': '%(asctime)s %(levelname)s [%(name)s:%(lineno)s] %(module)s %(process)d %(thread)d %(message)s' 
     } 
    }, 
    'handlers': { 
     'console': { 
      'level': 'INFO', 
      'class': 'logging.StreamHandler', 
      'stream': sys.stdout, 
      'formatter': 'verbose' 
     } 
    }, 
    'loggers': { 
     'gunicorn.errors': { 
      'level': 'INFO', 
      'handlers': ['console'], 
      'propagate': True, 
     }, 
    } 
} 

它似乎没有任何效果可言。当标志DEBUG设置为True时,我可以在控制台中看到一些错误。但是,如果它设置为False,我不能。那么如何将错误记录到控制台,尽管DEBUG标志被设置为一种方式或另一种方式?

+0

你用的是什么django版本? – HassenPy

+0

Django版本是1.10 –

回答

2

在Django 1.9default logging configuration has been changed

更改默认日志configuration¶

为了更容易编写自定义日志记录配置,Django的 默认的日志配置不再定义“django.request”和 'django.security'记录器。相反,它定义了一个单独的'django'记录器,使用两个处理程序在INFO级别进行筛选:

'console':在INFO级别进行筛选,并且只有在DEBUG = True时才处于活动状态。 'mail_admins':在ERROR级别过滤,仅在 DEBUG = False时才有效。例如,如果您不覆盖Django的默认日志记录,则您应该看到行为的最小更改,但您可能会看到一些新的 日志记录到runserver控制台。

如果您重写Django的默认日志记录,则应该检查 了解您的配置如何与新默认值合并。

所以,你需要做的仅仅是覆盖默认配置是什么,它添加到您的loggers

'django':{ 
    'level': 'INFO', 
    'handlers': ['console'], 
    'propagate': True, 
} 

登录到控制台不会现在就要靠DEBUG

希望这会有所帮助!

+1

是的,它帮助。谢谢! –

+0

我想你也可以删除'gunicorn.error'和'disable_existing_loggers',除非你有额外的配置需要它们 – HassenPy

+0

我实际上用你提供的内容替换了gunicorn.error,因为它没有做任何事情。 –