code: def calling_logger(height=1):
      
      stack = inspect.stack()
      height = min(len(stack) - 1, height)
      caller = stack[height]
      scope = caller[0].f_globals
      path = scope['__name__']
      if path == '__main__':
          path = scope['__package__'] or os.path.basename(sys.argv[0])
      return logging.getLogger(path)
docs: Obtain a logger for the calling module.
  
      Uses the inspect module to find the name of the calling function and its
      position in the module hierarchy. With the optional height argument, logs
      for caller's caller, and so forth.
  
      see: http://stackoverflow.com/a/900404/48251