Да, я вижу, что документ python говорит: «Регистраторы никогда не создаются напрямую, а всегда через функцию уровня logging.getLogger (name)», но у меня есть проблема чтобы отлаживать и хотеть знать основную причину.python: разница между logging.Logger и logging.getLogger
вот пример:
#!/usr/bin/python
import logging
logger = logging.getLogger("test")
format = "%(asctime)s [%(levelname)-8s] %(message)s"
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(format, datefmt="%Y-%m-%d %H:%M:%S"))
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
logger.info("test")
Использование logging.getLogger ("тест") здесь, бревенчатый сообщение не будет распечатано.
Если я изменю logging.getLogger («test») на logging.Logger («test»), будет выведено сообщение журнала.
#!/usr/bin/python
import logging
logger = logging.Logger("test")
format = "%(asctime)s [%(levelname)-8s] %(message)s"
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(format, datefmt="%Y-%m-%d %H:%M:%S"))
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
logger.info("test")
Или мы можем с помощью logging.getLogger ("тест") уровень и набор логгер для logging.DEBUG.
#!/usr/bin/python
import logging
logger = logging.getLogger("test")
format = "%(asctime)s [%(levelname)-8s] %(message)s"
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(format, datefmt="%Y-%m-%d %H:%M:%S"))
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.info("test")
похоже, что не объясняет, почему сообщение печатается при использовании Logger («test»), но не getLogger («test»). Оба они получают объект logging.Logger с уровнем журнала 0. – vts
См. Edit, не понимал, что раздел его был отключен, когда я отправил. – ioneyed
Спасибо, ioneyed, я вижу разницу после проверки logger.getEffectiveLevel(), .Logger («test») не будет наследоваться ни от одного регистратора, в то время как .getLogger («test») наследует от корневого регистратора, который имеет уровень журнала по умолчанию == 30. – vts