0

我想将日志条目捕获到一个字符串中,以显示在 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 内容(“报告”),但没有通过日志添加任何内容(“某些日志条目”)。

看了这个没开悟,也没有预感的看了日志教程,所以转过来了。

谢谢指点,诺比

4

1 回答 1

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 次“记录器”这个词,所以如果这令人困惑,我可以尝试澄清一下。

于 2014-03-26T21:45:24.137 回答