Python RotatingFileHandler не записывает все результаты, где FileHandler делает - PullRequest
1 голос
/ 20 апреля 2019

Я заметил, что при использовании RotatingFileHandler записываются не все события, отправляемые в регистратор.

Если я перехожу на FileHandler, все записывается.

Если я установлю свой обработчик так:

cjson_handler = RotatingFileHandler('{}/cjson.log'.format(log_directory), maxBytes=1024, backupCount=2)

В файл журнала записывается только первое событие из приведенного ниже кода.

    cjson_logger.info("system_info", extra={"CPU":cpu_details, "ROOT_USERS": users})
    core_list_small = core_list[:int(len(core_list) / 2)]
    cjson_logger.info("system_info", extra={"CPU": cpu_details_small, "ROOT_USERS": users})

Если я поменяю на:

cjson_handler = logging.FileHandler('{}/cjson.log'.format(log_directory))

Оба события записаны. Оба события используют один и тот же обработчик, но происходят очень близко друг к другу. Это как-то связано с тем, как вращение записей в журнал и обработчик файлов?

Есть ли что-то другое, что мне нужно сделать при записи нескольких событий в журнал с помощью вращающегося обработчика?

1 Ответ

0 голосов
/ 22 апреля 2019

Если вы установите backupCount не ноль, будут созданы cjson.log.1 и cjson.log.2, если cjson.log превысит maxBytes. Я подозреваю, что ваше сообщение журнала превышено, и другое сообщение было сохранено в .1 или .2 файле.

Тем не менее, больше информации о вашем формате, о том, как выглядит ваш extra дикт, и как ваша сделка с extra необходима, чтобы убедиться.

...