Покушение [see it running here]: Python каротаж на стандартный вывод и StringIO
from sys import stdout, stderr
from cStringIO import StringIO
from logging import getLogger, basicConfig, StreamHandler
basicConfig(format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M')
log = getLogger(__name__)
sio = StringIO()
console = StreamHandler(sio)
log.addHandler(console)
log.addHandler(StreamHandler(stdout))
log.info('Jackdaws love my big sphinx of quartz.')
print 'console.stream.read() = {!r}'.format(console.stream.read())
Выход [стандартный вывод]:
console.stream.read() = ''
Ожидаемый результат [стандартный вывод]:
[date] [filename] INFO Jackdaws love my big sphinx of quartz.
console.stream.read() = 'Jackdaws love my big sphinx of quartz.'
Спасибо, прекрасно. Может быть упрощено с помощью 'level = 'INFO'' в' basicConfig' и 'console.stream.getvalue()', а не '.seek (0)', за которым следует '.read()'. –
Спасибо, я уточню ответ с дополнительной информацией. –