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
结构。它应该有 handlers
、loggers
、filters
和 formatters
在同一级别的字典缩进:
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 会登录您的开发服务器,因为它使用默认记录器,忽略格式错误的配置。
我正在尝试使用 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
结构。它应该有 handlers
、loggers
、filters
和 formatters
在同一级别的字典缩进:
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 会登录您的开发服务器,因为它使用默认记录器,忽略格式错误的配置。