В приложении Flask я хотел бы настроить два разных регистратора файлов:
Один для журналов доступа HTTP (access.log
), который будет регистрировать такие вещи, как:
1.2.3.4 - [11/Jun/2018 09:51:13] "GET /some/path HTTP/1.1" 200 -
Один для журналов приложений (my_app.log
), который будет хранить журналы, определенные мной в моем коде, когда я использую current_app.logger.info('some message')
:
2018-06-08 15:08:50,083 - flask.app - INFO - some message
Как должна выглядеть моя конфигурация для достижения этой цели?Вот что я безуспешно пытался:
# content of "run.py" :
app = Flask(__name__)
app.logger.removeHandler(default_handler)
# Define 'my_app.log' :
handler = logging.FileHandler('my_app.log')
handler.setLevel(logging.INFO)
formatter = logging.Formatter(app.config['LOGGING_FORMAT'])
handler.setFormatter(formatter)
app.logger.addHandler(handler)
# Define 'access.log' :
access_handler = logging.getLogger('werkzeug')
access_handler = logging.FileHandler('access.log')
access_handler.setLevel(logging.DEBUG)
access_handler.setFormatter(app.config['LOGGING_FORMAT'])
app.logger.addHandler(access_handler)
# Then register my blueprints:
app.register_blueprint(some_blueprint, url_prefix='/')
....
И я запускаю его с python3 run.py
.С этим конфигом единственные зарегистрированные данные - это журналы HTTP-доступа в файле my_app.log
.
Что не так с моей конфигурацией?