1717# with this program; if not, write to the Free Software Foundation, Inc.,
1818# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1919
20+ import inspect
2021import os
2122import sys
2223import locale
@@ -82,11 +83,15 @@ def isWindows() -> bool:
8283 return os .name == 'nt'
8384
8485
85- def _logPrintOutput (msg : str ) -> None :
86+ def _logPrintOutput (msg : str , file : Optional [ TextIO ] = None ) -> None :
8687 if theResources .getOptionAsBool ('log_print_output' ):
87- print (msg , file = sys . stderr )
88+ print (msg , file = file )
8889 if theResources .getOptionAsBool ('log_print_stack' ):
89- traceback .print_stack ()
90+ # Show the stack trace, but remove the past 2 calls as it is just log functions noise
91+ frames = inspect .stack ()
92+ frameIdx = min (2 , len (frames ) - 1 )
93+ print ('Traceback (most recent call last):' , file = file )
94+ traceback .print_stack (frames [frameIdx ].frame , file = file )
9095
9196
9297def logDebug (msg : str ) -> None :
@@ -96,7 +101,7 @@ def logDebug(msg: str) -> None:
96101
97102def logError (msg : str ) -> None :
98103 '''Report error message.'''
99- _logPrintOutput (f'ERROR: { msg } ' )
104+ _logPrintOutput (f'ERROR: { msg } ' , sys . stderr )
100105
101106
102107def logErrorAndDialog (msg : str , parent : Gtk .Widget = None ) -> None :
0 commit comments