Django Logging with Elastic Beanstalk (AWS)



我正在使用Elastic Beanstalk在AWS上部署一个基于Django/Python的web服务。我正在使用Django的日志功能来记录网站使用和相关数据。虽然这在本地测试中工作得很好,但我无法让它与Beanstalk一起工作。

我登录settings.py的代码是:

# Django Logging
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
        'simple': {
        'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'spareguru.log',
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {
            'handlers':['file'],
            'propagate': True,
            'level':'DEBUG',
         },
        'customer': {
            'handlers': ['file'],
            'level': 'DEBUG',
         },
    }
}

部署到Beanstalk时得到的错误是:

ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/opt/python/bundle/3/app/spareguru.log'

我还尝试使用.ebextensions创建一个文件,并使wsgi为该文件的所有者,但这也不起作用。

我该如何解决这个问题?

您在服务器上没有创建日志文件的足够权限。Сonfigure SSH和使用CHMOD修改目录

权限

配置您的Elastic Beanstalk应用程序的环境(用于SSH) -在这里输入链接描述

对于OP来说有点晚了,但这可能对其他人有用:

如果你在.ebextensions container_commands中调用django-admin.py migrate,或者其他django代码,这将导致日志文件以root用户和root组创建(除非该文件已经存在)。

在这种情况下,你可能需要在所有django调用完成后(在.ebextensions中)更改文件权限,或者只是删除日志文件,在这里详细解释

最新更新