Вы можете использовать регистратор Flask для создания дочернего регистратора:
@app.before_request
def before_request():
if 'trace' in request.args:
trace_logger = app.logger.getChild('trace')
trace_logger.setLevel(logging.DEBUG)
g._trace_logger = trace_logger
Он будет повторно использовать конфигурацию родителя. В частности, он будет использовать настроенные вами обработчики и средства форматирования, но не уровень журналов или фильтры родительского уровня. Регистратор также ограничивается запросом через данный объект, так что он не будет доступен в других запросах, что делает этот дизайн потокобезопасным.
Далее напишите вспомогательную функцию:
def trace(*args, **kwargs):
logger = getattr(g, '_trace_logger', None)
if logger is not None:
logger.debug(*args, **kwargs)
Вы можете использовать эту функцию, как если бы это был вызов регистратора по всей вашей кодовой базе.
Если вы не работаете в режиме трассировки, эта функция недоступна.