Заменить wx.PyLog на что?

#python #wxpython

#python #wxpython

Вопрос:

Я переношу некоторый код Python с 2.7 на 3.x. Исходный код завершается ошибкой с этой ошибкой:

 class myTextLog(wx.PyLog):
AttributeError: 'module' object has no attribute 'PyLog'
  

При проверке наличия wx.PyLog его действительно там нет:

 >>> import wx
>>> wx.PyLog
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'PyLog'
>>> wx.version()
u'4.1.0 msw (phoenix) wxWidgets 3.1.4'
  

Когда я проверяю наличие wx.PyLog в более старой версии wx, он есть:

 >>> import wx
>>> wx.PyLog
<class 'wx._misc.PyLog'>
>>> wx._misc
<module 'wx._misc' from '/usr/lib/python2.7/site-packages/wx-3.0-gtk2/wx/_misc.pyc'>
>>> wx.version()
'3.0.2.0 gtk2 (classic)'
  

Я вижу, что он используется в этом старом примере кода: http://www2.geog.ucl.ac.uk /~plewis/bpms/src/start/Main.py

 #---------------------------------------------------------------------------
# Show how to derive a custom wxLog class

class MyLog(wx.PyLog):
    def __init__(self, textCtrl, logTime=0):
        wx.PyLog.__init__(self)
        self.tc = textCtrl
        self.logTime = logTime

    def DoLogString(self, message, timeStamp):
        #print message, timeStamp
        #if self.logTime:
        #    message = time.strftime("%X", time.localtime(timeStamp))   
        #              ": "   message
        if self.tc:
            self.tc.AppendText(message   'n')

  

Где-то по ходу строки он, похоже, был удален. Какая подходящая замена приведенному выше коду, учитывая, что wx.PyLog больше недоступен?

Ответ №1:

В python 3.x вы должны использовать: logging

Вы захотите взглянуть на ведение журнала КАК

 import logging
logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')
logging.error('And non-ASCII stuff, too, like Øresund and Malmö')