log: Improve log ctx information in log.Error exception
Before, it would show somethig like:
"""
osmo_gsm_tester.core.log.Error: Exited in error 255
"""
Now:
"""
osmo_gsm_tester.core.log.Error: rm-remote-dir(pid=24820): Exited in error 255 [trial↪4g:srsue-rftype@zmq+srsenb-rftype@zmq+mod-enb-nprb@6↪ping.py:9↪ping.py↪srsepc_10.42.42.118↪host-jenkins@10.42.42.110↪rm-remote-dir(pid=24820)]
"""
Change-Id: I8873f67a2f3df21c4dd552c92510535bf95e2c9d
diff --git a/src/osmo_gsm_tester/core/log.py b/src/osmo_gsm_tester/core/log.py
index 8ae55d9..2cf1af0 100644
--- a/src/osmo_gsm_tester/core/log.py
+++ b/src/osmo_gsm_tester/core/log.py
@@ -88,8 +88,17 @@
get_process_id = lambda: '%d-%d' % (os.getpid(), time.time())
class Error(Exception):
- def __init__(self, *messages, **named_items):
- super().__init__(compose_message(messages, named_items))
+ def __init__(self, *messages, origin=None, **named_items):
+ msg = ''
+ if origin is None:
+ origin = Origin.find_on_stack(f=sys._getframe(1))
+ if origin:
+ msg += origin.name() + ': '
+ msg += compose_message(messages, named_items)
+ if origin and origin._parent is not None:
+ deeper_origins = origin.ancestry_str()
+ msg += ' [%s]' % deeper_origins
+ super().__init__(msg)
class LogTarget:
all_targets = []