Ответ 1
Вы должны установить уровень регистратора, а не только уровень обработчика:
mylogger.setLevel(logging.DEBUG)
Вот хорошая графика рабочего процесса ведения журнала, где вы можете увидеть, что либо журнал, либо обработчик проверяют уровень журнала:
http://docs.python.org/2/howto/logging.html#logging-flow
Значение по умолчанию logLevel
равно WARNING
, поэтому, даже если вы установите уровень вашего обработчика на DEBUG
, сообщение не пройдет, поскольку ваш регистратор подавляет его (также по умолчанию WARNING
).
Кстати, вы можете сделать базовое форматирование с помощью Formatter
:
import logging
import sys
mylogger = logging.getLogger("mylogger")
formatter = logging.Formatter('[%(levelname)s] %(message)s')
handler = logging.StreamHandler(stream=sys.stdout)
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)
mylogger.addHandler(handler)
mylogger.setLevel(logging.DEBUG)
mylogger.debug("This is a debug message.")
mylogger.info("Some info message.")
mylogger.warning("A warning.")
Выдает вывод
[DEBUG] This is a debug message.
[INFO] Some info message.
[WARNING] A warning.