code: def logger(height=1):                 # http://stackoverflow.com/a/900404/48251
      
      caller = inspect.stack()[height]
      scope = caller[0].f_globals
      function = caller[3]
      path = scope["__name__"]
      if path == "__main__" and scope["__package__"]:
          path = scope["__package__"]
      return logging.getLogger(path + "." + function + "()")
docs: Obtain a function logger for the calling function. 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.