2014-01-19 4 views
1

установки: Python 3.3Python Logger не уважая уровень журнала

У меня есть блок тестовой программы, которую я хочу напечатать сообщения журнала. Python не печатает ничего, кроме WARNING или более высоких сообщений через этот регистратор, который я сделал, даже несмотря на то, что я задал значение журнала для INFO.

Вот код, я использую:

test_logger = logging.getLogger('DesktopprTester') 
print(test_logger.getEffectiveLevel()) 
test_logger.setLevel(logging.INFO) 
print(test_logger.getEffectiveLevel()) 
test_logger.warning('WARN') 
test_logger.info('INFO') 

А вот выход:

30 <-30 is WARN 
20 <-20 is INFO 
WARN 

Он не печатает INFO. Поэтому мне не хватает всех моих информационных инструкций в этом файле ... и я не знаю, почему. Кажется, что документы согласны со мной. Когда я использовал корневой регистратор и задавал уровень для информации, он печатал бы его (и все остальное, что он делал). Теперь, когда я сделал свой собственный регистратор, он, похоже, не работает. Обратите внимание, что сообщения уровня WARNING все еще появляются, но они не то, что я хочу видеть.

Что-то я здесь не хватает? Я чувствую, что есть какой-то очевидный ответ я не вижу ...

ответ

1

Во время работы кода в Python 2, вы получите четкое предупреждение:

No handlers could be found for logger "DesktopprTester" 

Так что вам просто нужно добавить обработчик к вашему регистратор:

test_logger = logging.getLogger('DesktopprTester') 
hdlr = logging.StreamHandler() 
test_logger.addHandler(hdlr) 

предупреждение не появляется на Python 3 - Я не знаю, почему

+0

это зафиксировал его. Документы на самом деле не сделали это слишком очевидным. Я понял, что у них есть обработчики, но похоже, что он перенаправляется на файлы или сетевые потоки. Благодарю. – Mgamerz

+0

@Mgamerz, это их назначение (по unix, по крайней мере, 'stdin' и' stdout' можно считать «файлами»). В [примере в документации] (http://docs.python.org/2/howto/logging.html#configuring-logging) используется обработчик, но, к сожалению, 'logging' не предоставляет' StreamHandler' на регистраторах по умолчанию (как и на модуле) – goncalopp

Смежные вопросы