Не удается получить флягу для входа в систему, чтобы выбрать /python/log на Elastic Beanstalk AWS
Я пытался заставить свое приложение Flask войти в файл журнала. В эластичном бобовом стебле у меня в приложении фляги есть регистратор, который записывает файлы в
opt/python/log
Файл успешно создан, но когда я пытаюсь сделать что-то вроде
log.warning('ERROR')
Линия не отображается правильно. Я проверил, чтобы убедиться, что мой регистратор работает правильно на localhost. Я прочитал много ответов переполнения стека и считаю, что это проблема с разрешениями, однако, когда я пытаюсь добавить
commands:
01_change_permissions:
command: chmod g+s /opt/python/log
02_change_owner:
command: chown root:wsgi /opt/python/log
в
.ebextensions
Или даже что-то вроде
files:
"/opt/elasticbeanstalk/tasks/taillogs.d/history.conf" :
mode: "000755"
owner: root
group: root
content: |
/opt/log/python/history.log
Ничто не похоже на работу. Любая помощь будет оценена!
1 ответ
Прочитайте документы.
Я думаю, что вы должны использовать регистратор, как: app.logger.warning('ERROR')
,
Потянув из этого ответа относительно регистрации для приложения Django.
В команде 2 вам нужно изменить владельца и группу каталога на: wsgi.
Третья команда также необходима для изменения владельца по умолчанию
Также мне пришлось добавить третью команду для настройки контроля доступа к файлам. Кто-то умнее меня может понять, почему это необходимо, но без этого я столкнулся с проблемами.
Ваш файл конфигурации.ebextensions должен быть:
commands:
01_change_permissions:
command: chmod g+s /opt/python/log
02_change_owner:
command: chown wsgi:wsgi /opt/python/log
03_change_default_owner:
command: setfacl -d -m g::rw /opt/python/log
В загадке было две части.
Во-первых:
Регистратор должен быть подключен к приложению в соответствии с этим GitHub
https://gist.github.com/sm-azure/c4b2edd8a726d81f42c98ee40fc1730a
application.logger.addHandler(YourFileHandler)
Во-вторых:
Вам нужно вызывать регистратор через application.logger, а не только регистратор; т.е.
application.logger.debug("This text will log")
Следующая форма НЕ РАБОТАЕТ:
logger.debug("This text will NOT log")