Tôi có một thử nghiệm python mà tôi muốn kiểm tra xem quá trình ghi có hoạt động đúng hay không. Ví dụ tôi có một chức năng tạo ra một người dùng và ở phần cuối, việc ghi nhật ký ghi vào tệp nhật ký phản hồi.Ghi nhật ký Python vào trình xử lý StringIO
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
handler = logging.handlers.WatchedFileHandler('mylogfile.log')
formatter = logging.Formatter('%(asctime)s: %(message)s',
'%d/%b/%Y:%H:%M:%S %z')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info('Some log text')
Trong trường hợp thử nghiệm của tôi, tôi muốn gửi đầu ra bản ghi tới StringIO.
class MyTest(unittest.TestCase):
def setUp(self):
stream = StringIO()
self.handler = logging.StreamHandler(stream)
log = logging.getLogger('mylogger')
log.removeHandler(log.handlers[0])
log.addHandler(self.handler)
def tearDown(self):
log = logging.getLogger('mylogger')
log.removeHandler(self.handler)
self.handler.close()
Vấn đề là tôi không chắc chắn làm cách nào để kiểm tra bộ lọc hoặc bộ ghi nhật ký của tôi đang hoạt động.
Xin lỗi, đây có thể chỉ là ngoài tôi, nhưng bạn sẽ không chỉ làm 'stream.getvalue()'? – macduff
liên quan: [PyDev unittesting: Cách ghi lại văn bản đã đăng nhập vào nhật ký ghi dữ liệu.Logger in "Captured Output"] (http://stackoverflow.com/q/7472863/321973) –