#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 для записи всех сообщений. Если кто-нибудь знает лучший способ сделать это, пожалуйста, дайте мне знать.