我怎样才能登录到文件以及 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 operation on closed file 。
最佳答案
一个记录器可以有多个处理程序!所以您可以轻松实现这一目标。
例子
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')
关于python登录文件以及wxpython txt ctrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817117/