Нулевые значения в файле журнала из модуля журналирования Python при использовании с DaskPython

Программы на Python
Anonymous
Нулевые значения в файле журнала из модуля журналирования Python при использовании с Dask

Сообщение Anonymous »

Я пытался настроить ведение журнала с помощью модуля logging в скрипте Python, и он работает правильно. Теперь он может вести журнал как на консоли, так и в файле журнала. Но если не получится при настройке кластера Dask. Первое сообщение журнала теперь заменено недействительными/нулевыми значениями в файле журнала, а вывод на консоль в порядке.
Минимальный рабочий пример приведен ниже:

Код: Выделить всё

import logging

from dask.distributed import LocalCluster as Cluster

logfile_name='test.log'
logger=logging.getLogger(__name__)
logger.setLevel('DEBUG')
log_format=logging.Formatter(
'%(asctime)s %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
)
console_handler=logging.StreamHandler()
console_handler.setLevel('DEBUG')
console_handler.setFormatter(
log_format)
file_handler=logging.FileHandler(
logfile_name, mode='w')
file_handler.setLevel('DEBUG')
file_handler.setFormatter(log_format)
logger.addHandler(file_handler)
logger.addHandler(console_handler)

if __name__=='__main__':

logger.info('First log message')

cluster=Cluster(
name='test', n_workers=1,
threads_per_worker=1, memory_limit='1GiB',
dashboard_address=':8000',
)
logger.info('Second log message')
logger.info('Third log message')
logger.info('Fourth log message')
logger.info('Fifth log message')

cluster.close()
logging.shutdown()
Журнал консоли:

Код: Выделить всё

2024-09-22 15:28:30 INFO: First log message
2024-09-22 15:28:31 INFO: Second log message
2024-09-22 15:28:31 INFO: Third log message
2024-09-22 15:28:31 INFO: Fourth log message
2024-09-22 15:28:31 INFO: Fifth log message
И содержимое файла журнала (скопировано из Gedit):

Код: Выделить всё

\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\002024-09-22 15:41:46 INFO: Second log message
2024-09-22 15:41:46 INFO: Third log message
2024-09-22 15:41:46 INFO: Fourth log message
2024-09-22 15:41:46 INFO: Fifth log message
Обратите внимание на недопустимые/нулевые значения в первой строке и отсутствие первого сообщения журнала.
Покопавшись, я обнаружил, что если я удалю код кластера Dask, все будет в порядке. Странно то, что если я изменю режим на append в FileHandler, проблема исчезнет без удаления инициализации кластера Dask.
Как решить эту проблему, не удаляя код Dask и не меняя режим открытия файла?


Подробнее здесь: https://stackoverflow.com/questions/790 ... -with-dask

Вернуться в «Python»