diff --git a/moulinette/utils/log.py b/moulinette/utils/log.py index 47c13a1e..e7cf825f 100644 --- a/moulinette/utils/log.py +++ b/moulinette/utils/log.py @@ -85,19 +85,29 @@ class MoulinetteLogger(Logger): if self.isEnabledFor(SUCCESS): self._log(SUCCESS, msg, args, **kwargs) - def findCaller(self): + def findCaller(self, stack_info=False): """Override findCaller method to consider this source file.""" f = logging.currentframe() if f is not None: f = f.f_back - rv = "(unknown file)", 0, "(unknown function)" + rv = "(unknown file)", 0, "(unknown function)", None while hasattr(f, "f_code"): co = f.f_code filename = os.path.normcase(co.co_filename) if filename == logging._srcfile or filename == __file__: f = f.f_back continue - rv = (co.co_filename, f.f_lineno, co.co_name) + + sinfo = None + if stack_info: + sio = io.StringIO() + sio.write('Stack (most recent call last):\n') + traceback.print_stack(f, file=sio) + sinfo = sio.getvalue() + if sinfo[-1] == '\n': + sinfo = sinfo[:-1] + sio.close() + rv = (co.co_filename, f.f_lineno, co.co_name, sinfo) break return rv