使用Elastic Beanstalk(AWS)进行Django日志记录
使用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日
虽然对于提问者来说有点晚了,但这可能对其他人有用:
如果在.ebextensions
的 container_commands
中调用例如 django-admin.py migrate
,或其他 Django 代码,这将导致日志文件以用户 root
和组 root
创建(除非文件已经存在)。
在这种情况下,您可能需要在所有 Django 调用执行完毕后更改文件权限(在.ebextensions
中),或者只需删除日志文件,详见此处。