如何登录文件以及wxpython txt ctrl?
背景我有基于wxpython GUI的应用程序,它枚举python测试文件并执行它们。在http://broadcoder.blogspot.com/2009/10/redirecting-python-logging-to.html的帮助下,我能够将python日志消息重定向到txtctrl。但是,我也想将日志消息重定向到日志文件。 我导入我的测试文件:
logging.info('Started')
testid = __import__(str)
reload(testid)
testOut = testid.main()
在我的每个测试文件中,我只使用导入日志记录,我的日志消息被重定向到txt ctrl。但是,我还希望测试日志消息也可以根据文件名重定向到日志文件。如何将日志消息重定向到两者? 如果我在我的测试文件中使用logging.basicConfig消息仍然仅指向文本ctrl。我在其中导入的TestGUI.py说5个python测试文件。在我的测试文件文件中,我只是在我的TestGUI.py文件中设置记录器时使用导入记录
self.logr = logging.getLogger('')
self.logr.setLevel(logging.INFO)
hdlr = WxLog(self.log)
hdlr.setFormatter(logging.Formatter('%(message)s '))
self.logr.addHandler(hdlr)
在我的测试文件中,我做了类似的事情:
logger = logging.getLogger('')
fh = logging.FileHandler("log.html",mode='w')
formatter = logging.Formatter('%(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
a= 5
b= 6
logging.info('a=5')
logging.info('b=6')
c= a+b
logging.info('adding b and c')
fh.close()
当我多次运行此测试时,我得到ValueError:关闭文件的I / O操作。
答案 0 :(得分:5)
One Logger可以有多个处理程序!所以你可以轻松实现这一目标。
示例
import logging
logger = logging.getLogger('myapp')
hdlr = logging.FileHandler('var/myapp.log')
hdlr2 = logging.FileHandler('var/myapp2.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
hdlr2.setFormatter(formatter)
logger.addHandler(hdlr)
logger.addHandler(hdlr2)
logger.setLevel(logging.INFO)
logger.info('a log message')