Почему у меня не логируются данные и дополнительных модулей, кроме основного и как это исправить?

Я логирую определенные этапы работы скрипта.

Согласно документации, я создаю logger в основном файле программы и инициализирую его во всех остальных (logger = logging.getLogger(__name__)). Но, у меня почему-то логируются только действия которые происходят в основном файле.

Вот то, что я описывал выше на уровне кода,

Часть, которая отвечает за логирования и выполнения основного файла:

import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(name)s:%(message)s')
file_handler = logging.FileHandler('paragraphs_extractor.log')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

if __name__ == '__main__':

    logger.info("---STARTING DATA PREPARATION---")
    LabelDocuments(data_dir, serialized_path).label_directory()
    EncodeDocuments(serialized_path, encoded_path, csv_path).encode_directory()
    logger.info("---FINISHED DATA PREPARATION---\n")

    logger.info("---STARTING TRAINING---")
    ModelTrain(csv_path, model_store_dir).train()
    logger.info("---FINISHED TRAINING---\n") 

Во всех других модулях, я вызываю логгер. Вот пример:

import logging
logger = logging.getLogger(__name__)

Вот пример метода класа, где я логирую определенные этапы:

import logging
logger = logging.getLogger(__name__)

class LabelDocuments(object):


    def label_directory(self):
        logger.info("SERIALIZATION STARTED")

        for path in self.paths:
            logger.info(f"Starting serialization for {path}")
            labeled_document = self.label_document(path)

            file_path = os.path.basename(path)
            json_file_path = file_path[:-4] + ".json"
            store_path = os.path.join(self.serialized, json_file_path)

            with open(store_path, 'w') as outfile:
                json.dump(labeled_document, outfile)

            logger.info(f"File: {path}  was serialized to: {store_path}")
        return logger.info("SERIALIZATION FINISHED")

Когда я запускаю основной файл, у меня логируются только действия, логирования которых задается в основном файле. Вот пример:

2022-09-10 12:00:58,759:INFO:__main__:---STARTING DATA PREPARATION---
2022-09-10 12:01:01,333:INFO:__main__:---FINISHED DATA PREPARATION---

2022-09-10 12:01:01,333:INFO:__main__:---STARTING TRAINING---
2022-09-10 12:01:01,582:INFO:__main__:---FINISHED TRAINING---

Я ожидаю, что будут логироваться действия класса LabelDocuments.

Если в каждому модуле я инициилизирую logger с нуля через:

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(name)s:%(message)s')
file_handler = logging.FileHandler('paragraphs_extractor.log')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

то логирования происходит так как надо.

Почему при текущей реализации логирования у меня логируются только действия основного файла и как это исправить

Благодарю за советы и ответы.


Ответы (0 шт):