Почему у меня не логируются данные и дополнительных модулей, кроме основного и как это исправить?
Я логирую определенные этапы работы скрипта.
Согласно документации, я создаю 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)
то логирования происходит так как надо.
Почему при текущей реализации логирования у меня логируются только действия основного файла и как это исправить
Благодарю за советы и ответы.