StringIO捕获日志,但没有写入

时间:2014-03-26 21:20:04

标签: python logging stringio

我想将日志条目捕获到字符串中,以在wx对话框中显示。我只是不能通过日志条目填充StringIO ......这里有什么问题?

# prepare logging
log = StringIO.StringIO('Report')
logger = logging.getLogger (__name__)
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler(log)
logger.addHandler(handler)
# do something and log it
logging.info('Some log entry')
# display log
handler.flush()
dlg = wx.lib.dialogs.ScrolledMessageDialog(window, log.getvalue(), "Import Report")
dlg.ShowModal()
log.close()

该对话框显示了最初的StringIO内容('报告'),但没有通过日志添加任何内容('某些日志条目')。

我在没有启发的情况下看了this,并且毫不费力地阅读了日志教程,所以我转过来了。

感谢指点,nobi

1 个答案:

答案 0 :(得分:1)

logger = logging.getLogger (__name__)

您正在将一个名称传递给getLogger,因此它会为您提供一个具有指定名称的记录器(而不是根记录器,这在以后很重要)。

logging.info('Some log entry')

您正在调用 logging.info (注意:与 logger.info 非常不同)。 logging.info记录到根记录器。这与您的logger不同。

切换调用logger.info('Some log entry')或只是从logging.getLogger()获取根记录器而不传递字符串。

回过头来看,我在大约60倍的情况下使用了“记录器”这个词大约60次,所以如果这很令人困惑,我可以试着澄清一下。