"Не удалось найти обработчики для регистратора"LOGGER_NAME"", пока программа запускается как демон
Вопросы по сообщению
Не найдены обработчики для регистратора "X"
от питона logging
модуль, кажется, довольно распространенный здесь, на SO, но я еще не нашел тот, который касается моего случая.
Мое приложение имеет эту проблему, только когда оно запускается как демон, поэтому я предполагаю, что я не настраиваю что-то там правильно. Я использую пакет python-daemon в Python 2.7.
мой __init__.py
Файл инициализирует регистратор с помощью следующей функции:
def init_logger(logger_name, log_file):
'''
Returns: (Logger, [LoggerFH])
'''
logger = logging.getLogger(logger_name)
ch = logging.StreamHandler()
ch.setLevel(level=logging.DEBUG)
fh = logging.FileHandler(log_file)
fh.setLevel(level=logging.DEBUG)
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger, [fh, ch]
Функция вызывается следующим образом:
logger, logger_fhs = init_logger('logger_name', 'logger_file_path')
Затем демон инициализируется так:
context = daemon.DaemonContext(
files_preserve=map(operator.attrgetter('stream'), logger_fhs)
)
with context:
bombs_away(args) # This application does not actually launch any bombs :)
Что мне не хватает? Что еще я могу проверить, чтобы найти источник сообщения?
1 ответ
Решение
Один из моих модулей пытался вызвать регистратор и записать сообщение во время импорта, которое было бы до init_logger
назывался.