将sdterr重定向到记录器会导致分段错误

时间:2016-01-14 16:36:36

标签: macos python-3.x pyqt

我知道有很多关于在python中重定向stderr的问题,但我似乎无法让它们在我的应用程序中运行。

为了让您了解背景,我有一个记录器,它来自日志记录模块,输出到文件和流(输出到QTextEdit小部件),感谢logging.FileHandler和{{1} }。由于我处于开发的调试阶段,我还想在同一文件中写入部署/测试阶段可能发生的错误回溯。

这是我的代码,除了分段错误之外什么都不输出:11。

logging.StreamHandler

修改

以下是myLogger类的代码:

class streamToLogger( ):

    def __init__( self, name = None ):
        self._logger = logging.getLogger( name )

    def write( self, text, level = logging.CRITICAL ):
        if text != "\n":
            self._logger.log( level, text )

    def flush( self ):
        for handler in self._logger.handlers:
            handler.flush( )

class Example( QWidget ):

    def __init__( self ):
        super( ).__init__( )
        #UIStream = streamToUI()
        l = myLogger( config, None )
        sys.stderr = streamToLogger( "myLogger" ) 
        self._initUI( )

    def _initUI( self ):
        self.btn = QPushButton( 'Button', self )
        self.btn.resize( self.btn.sizeHint( ) )
        self.btn.move( 50, 50 )       
        self.btn.clicked.connect( self._raiseError )

        self.setGeometry( 300, 300, 300, 200 )
        self.setWindowTitle( 'Test Raise error log' )    
        self.show()

    @pyqtSlot()    
    def _raiseError( self ):
        a = 1 / 0

if __name__ == '__main__':
    app = QApplication( sys.argv )
    ex = Example( )
    sys.exit( app.exec_( ) )

0 个答案:

没有答案