вход в файл python, а также wxpython txt ctrl - PullRequest
1 голос
/ 19 октября 2011

Как мне войти в файл, а также в 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)

В своем тестовом файле я делаю что-то вроде этого:get ValueError: операция ввода-вывода для закрытого файла, когда я запускаю этот тест более одного раза.

1 Ответ

5 голосов
/ 20 октября 2011

Один 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...