我想将日志条目捕获到字符串中,以在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
答案 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次,所以如果这很令人困惑,我可以试着澄清一下。