使用Elastic Beanstalk(AWS)进行Django日志记录

11 浏览
0 Comments

使用Elastic Beanstalk(AWS)进行Django日志记录

我正在使用Elastic Beanstalk部署基于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作为该文件的所有者,但这也不起作用。

我该如何修复这个问题?

admin 更改状态以发布 2023年5月21日
0
0 Comments

虽然对于提问者来说有点晚了,但这可能对其他人有用:

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

在这种情况下,您可能需要在所有 Django 调用执行完毕后更改文件权限(在.ebextensions 中),或者只需删除日志文件,详见此处

0
0 Comments

您在服务器上没有足够的权限创建日志文件。配置SSH并使用CHMOD更改文件夹的权限

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

0