|
@@ -1,3 +1,4 @@
|
|
|
+import inspect
|
|
|
import logging
|
|
|
import sys
|
|
|
|
|
@@ -17,3 +18,23 @@ def setup_logging(args, stream=None):
|
|
|
l.setLevel(levels[args.verbose])
|
|
|
return sh,
|
|
|
|
|
|
+def find_parent_module():
|
|
|
+ """find the name of a the first module calling this module
|
|
|
+
|
|
|
+ if we cannot find it, we return the current module's name
|
|
|
+ (__name__) instead.
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ frame = inspect.currentframe().f_back
|
|
|
+ module = inspect.getmodule(frame)
|
|
|
+ while module is None or module.__name__ == __name__:
|
|
|
+ frame = frame.f_back
|
|
|
+ module = inspect.getmodule(frame)
|
|
|
+ return module.__name__
|
|
|
+ except AttributeError:
|
|
|
+ # somehow we failed to find our module
|
|
|
+ # return the logger module name by default
|
|
|
+ return __name__
|
|
|
+
|
|
|
+def create_logger(name=None):
|
|
|
+ return logging.getLogger(name or find_parent_module())
|