python登录到文件以及wxpython txt ctrl

时间:2011-10-19 05:55:52

标签: python logging wxpython

如何登录文件以及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操作。

1 个答案:

答案 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')
相关问题