2015-06-06 4 views
0

В этом коде есть что-нибудь, что объясняет, почему мои информационные сообщения не попадают в журнал. Правильно отформатированные предупреждения и выше идут в оба файла журнала.Python logging setLevel not logging

Initializing регистратор:

logger = logging.getLogger() 
f = logging.Formatter('%(asctime)s\n%(levelname)s: %(funcName)s %(message)s') 
out = logging.handlers.RotatingFileHandler(filename=self.f_stdout, maxBytes=1048576, backupCount=99) 
err = logging.handlers.RotatingFileHandler(filename=self.f_stderr, maxBytes=1048576, backupCount=99) 
out.setLevel(logging.INFO) 
err.setLevel(logging.WARNING) 
err.setFormatter(f) 
logger.addHandler(out) 
logger.addHandler(err) 

Использование:

logging.info('this doesnt get logged') 
logging.warning('this gets logged to stdout and stderr with respective formatting') 

ответ

2

Вы никогда не установить уровень регистрации корневой регистратор сам объект (logger переменной в коде). Оба обработчика и регистраторы имеют уровни журналов; линии достигают выхода только в том случае, если они превышают оба порога.

Поскольку вы не устанавливаете уровень корневого журнала, он использует свое значение по умолчанию (предупреждение). Попробуйте добавить звонок к logger.setLevel(logging.INFO), чтобы изменить это.