запись в файл из bonobo etl

#python #logging #bonobo-etl

#python #ведение журнала #bonobo-etl

Вопрос:

Я написал скрипт bonobo для извлечения некоторых данных, и я хотел бы использовать модуль ведения журнала python для записи некоторых сообщений о состоянии в файл во время выполнения моей работы. Я сделал следующее:

 import logging
logging.basicConfig(filename=INFO["LOGFILE_PATH"] r'bonobo_job_' date.today().isoformat(),
                filemode='a',
                format='%(name)s - %(levelname)s - %(message)s')
  

Если я просто запускаю скрипт в Pycharm, он регистрируется в файле, как я и ожидал. Но если я запускаю его из командной строки с помощью команды bonobo run, он игнорирует имя файла и регистрируется в stdout. Как мне это исправить? Есть ли флаг или переменная среды, которую мне нужно где-то установить?

Ответ №1:

Хорошо, я понял это. По какой-то причине basicConfig не работает. Мне пришлось использовать getLogger и добавить FileHandler. Итак, в основном я сделал это:

 logger = logging.getLogger('bonobo_logger')
ch = logging.FileHandler(logfilename)
formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
  

Затем в каждом узле моего графика, где я хотел вести журнал, я вызвал:

 logger = logging.getLogger('bonobo_logger')
  

и использовал объект logger для записи всех сообщений. Если кто-нибудь знает лучший способ сделать это, пожалуйста, дайте мне знать.