Существует множество способов сделать это - можно использовать простую вспомогательную функцию, подобную этой (предполагается, что import logging
уже выполнено):
def log_structured(logger, level, **kwargs):
kwargs[level] = level
# you could also inject the logger name into kwargs here ...
# convert e.g. string 'INFO' to logging.INFO
# assumes you only use the standard levels defined in logging
level = getattr(logging, level)
logger.log(level, StructuredMessage(**kwargs))
Функции, подобные logging.info()
, используют root регистратор, чтобы вы могли сделать что-то вроде
root_logger = logging.getLogger()
log_structured(root_logger, 'INFO', foo='bar', bar='baz', num=123, fnum=123.456)