Django uWSGI 创建日志文件但该文件为空(适用于开发服务器)

Django uWSGI creates log file but the file is empty (works with development server)

我正在尝试使用 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'
                },     
            },
  }

在此先感谢您提供的任何帮助。

这是因为你的配置有误。您将 loggers 放在 handlers 中,这违反了 LOGGING 结构。它应该有 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 会登录您的开发服务器,因为它使用默认记录器,忽略格式错误的配置。