Django uWSGI创建日志文件,但文件为空(与开发服务器一起使用)

时间:2017-02-15 13:36:15

标签: python django logging uwsgi

我正在尝试使用uWSGI设置我的Django项目。我在settings.py中定义了我的日志处理程序,当我使用开发服务器时,他们会写日志。但是,当我使用uWSGI移动到我的生产服务器时,虽然创建了日志文件,但它是空的。

我的settings.py包含此内容:

import logging
logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
    'console': {
        'class': 'logging.StreamHandler',
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/tmp/zdebug.log',
            },
        },
        'loggers': {
            'django': {
                'handlers': ['console','file'],
                'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
            },
           'devices': {
               'handlers': ['console','file'],
               'level': 'INFO'
            },
           'stack_configs': {
                'handlers': ['console','file'],
                'level': 'INFO'
            },   
           'django_auth_ldap': {
                'handlers': ['console','file'],
                'level': 'INFO'
                },     
            },
  }

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

这是因为您的配置错误。您已loggers置于handlers内,这违反了LOGGING结构。它应该在dict缩进的同一级别上有handlersloggersfiltersformatters

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/tmp/zdebug.log',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console','file'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
        },
       'devices': {
           'handlers': ['console','file'],
           'level': 'INFO'
        },
       'stack_configs': {
            'handlers': ['console','file'],
            'level': 'INFO'
        },   
       'django_auth_ldap': {
            'handlers': ['console','file'],
            'level': 'INFO'
        },
    },
}

您看到的空文件是在Django启动时创建的,Django会在开发服务器上登录,因为它使用默认记录器,而忽略了格式错误的配置。