python登录文件以及wxpython txt ctrl

标签 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 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/

相关文章:

python - txredisapi 异步订阅和监听

c# - 从 wcf 服务的响应结果生成 xml

logging - 如何使用 FileBeat 从日志行设置字段

button - 如何在 wxpython 中设置切换按钮的颜色?

python - Fastai 文本分类器 : batch prediction on unseen data

python - 特征和权重的热图

python - 如何在 ubuntu 20 和 ros noetic 上使用和安装 arbotix gui?

python - 以字符数设置 wxPython TextCtrl 的宽度

python - 在 python 调试器 (pdb) 中为符号赋值

logging - Laravel 每天记录消息/错误并明智地输入