Не удается получить флягу для входа в систему, чтобы выбрать /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")
Другие вопросы по тегам