Я пытаюсь понять, как работает запись на python.Использование протоколов python и обработчика
Я получаю, что это экземпляр singleton, который применяется ко всему запущенному интерпретатору.
У меня есть эта функция:
def setup_logging(options=None):
'''setup the logger and return it'''
logging.basicConfig(level=logging.WARNING,
format='%(levelname)s: %(message)s',
filename='/tmp/pluser.log')
logger = logging.getLogger('pluser')
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
print(console.level)
logger.addHandler(console)
return logger
То, что я называю с помощью этого:
console = setup_logging(options)
console.debug('Initializing database')
connect_to_db()
console.debug('Database initialized')
(. Это подготовка делает больше протоколирования в разные места)
Теперь «консоль "является экземпляром" logging.Logger ". У этого есть StreamHandler. Этот обработчик потока имеет уровень 10 (который является logging.DEBUG). Однако, StreamMandler, похоже, не получает сообщения, потому что вещи только печатают на консоль (которая должна иметь stderr и stdout на нем) на консоли. Предупреждение, ошибка или критическое.
Итак, я явно пропустил что-то о том, как логгер взаимодействует либо с системой, либо с StreamHandler.
Моя цель - когда уровень StreamHandler должен отлаживаться, все печатает на консоль, но я также хотел бы понять, почему это не работает.
Я добавил "logging.StreamHandler (sys.stdout), а затем он печатает 3 раза подряд, если я делаю console.warning, но все равно не печатаю при отладке. – qkslvrwolf