Я использую Flask и Connexion для REST API на основе Python, и он работает в контейнере Docker. Вот main.py
:
import connexion
import logging
from app.log import handler
# initiate swagger/connexion
application = connexion.App(__name__, specification_dir='./')
application.add_api('swagger.yml')
# logging
application.app.logger.handlers.clear()
application.app.logger.addHandler(handler)
application.app.logger.setLevel(logging.DEBUG)
application.app.logger.debug('application starting...')
# if we're running in standalone mode, run the application
if __name__ == '__main__':
application.run(host='0.0.0.0', port=5000, debug=True)
Это прекрасно работает, и на моем сервере системного журнала я вижу:
2020-01-14 11:03:14,951 app main:DEBUG application starting...
Однако я не уверен, как правильно войти в систему из файлов за пределами main.py
. Например, у меня есть status.py
, который имеет один маршрут для GET /status
, а код выглядит следующим образом:
import yaml
from flask import current_app
import logging
def read():
# LOG TESTING
current_app.logger.debug('Test using current_app')
logging.getLogger(__name__).debug('Test using getLogger')
print('Test using print')
with open('./swagger.yml', 'r') as f:
y = yaml.load(f)
return {
# .... some data here
}
На моем сервере системного журнала я вижу:
Test using print
./status.py:22: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
y = yaml.load(f)
Я хотел бы использовать тот же механизм ведения журнала, который main.py
использует во всех моих отдельных файлах, но я могу заставить его работать только с main.py
, и единственное, что работает за пределами main.py
, - это печать однако, как видно из вышесказанного, ошибки также могут быть обнаружены (хотя и без отметки времени).