我知道有很多关于在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_( ) )