Настраиваю логирование для проекта на основе модуля logging.
Настройки логирования осуществляю через конфиг-файл logging.json и подключаю через logging.config.dictConfig().
Почему-то при такой настройке не могу добавлять extra data в логи, то есть при вызове, например:
# read configs
with open(log_configs_path, 'r') as f:
LOGGING_CONFIGS = json.load(f)
# run logger
logging.config.dictConfig(LOGGING_CONFIGS)
logger = logging.getLogger(__name__)
additional_data = {"duration" : 100}
logger.info("Data to log", extra=additional_data )
additional_data просто не записывается в логи. Не могу понять, с чем связано и как настроить добавление
произвольной пользовательской информации в логи.
В дальнейшем хочу иметь возможность эффективно и удобно анализировать логи, поэтому ищу способ гибко вести логирование проекта.
Содержимое logging.json:
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"standard": {
"class": "logging.Formatter",
"format": "%(asctime)s::%(levelname)s::%(filename)s::%(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "standard",
"level": "INFO",
"stream": "ext://sys.stdout"
},
"file": {
"class": "logging.handlers.TimedRotatingFileHandler",
"formatter": "standard",
"level": "INFO",
"filename": ".\\logs\\log_data.log",
"when": "d",
"interval": 1,
"backupCount": 30,
"encoding": "utf-8"
}
},
"loggers": {
"__main__": {
"handlers": [
"console",
"file"
],
"level": "INFO",
"propagate": false
}
},
"root": {
"level": "INFO",
"handlers": [
"file"
]
}
}