Making a decorator with arguments in a flat manner
I've found a couple bugs - lack of exception support and it doesn't work with generators. Well, it does in a way, but not the way someone would expect it to.

To fix aforementioned issues, decorator have been changed into this (nevermind Python 2.7 compatibility modifications):

def temp_loglevel(level):
    """
    Decorator to set temporary loglevel for the scope of this function
    (then revert it back on wrapper exit)

    Arguments:
        level: new logging level to set
    """
    logger = logging.getLogger()
    p_closure = dict(func=None)

    def wrapper(*args, **kwargs):
        old_level = logger.level
        logger.setLevel(level)
        try:
            rv = p_closure['func'](*args, **kwargs)
            if isinstance(rv, types.GeneratorType):
                def wrapper_gen():
                    # wrapper's finally block overrides initial setLevel after
                    # returning a generator object
                    logger.setLevel(level)
                    try:
                        for x in rv:
                            yield x
                    finally:
                        logger.setLevel(old_level)

                return wrapper_gen()
            else:
                return rv
        finally:
            logger.setLevel(old_level)

    def wrapper_maker(decorable):
        p_closure['func'] = decorable
        logger.warn(
            "temp_loglevel used, don't forget to "
            "remove it when debugging is done"
        )

        return functools.wraps(decorable)(wrapper)

    return wrapper_maker


P.S. After thinking about how ugly would a flat version of wrapper_gen be, I've made a mental note to myself: "flat is better than nested", but if you absolutely need to make something nested, do it FFS!