Untitled

                Never    
# coding=utf-8
import sys

class func_trace():
    """ Trace function we want to log """
    
    def __init__(self, name):
        self.name = name
    
    def __enter__(self):
        print('Entering Debug Decorated func')
        # check if we trace function we want to
        sys.settrace(self.trace_func)
    
    def __exit__(self, *args, **kwargs):
        # Stop tracing
        sys.settrace = None
    
    def trace_func(self, frame, event, arg):
        # call only on function which we want to log
        if event != 'call':
            return
        elif frame.f_code.co_name != self.name:
            return
        # call tracing function
        return self.trace_lines
    
    def trace_lines(self, frame, event, arg):
        print 'Line:{0} at function name: {1}\nAll params{2}\n'.format(frame.f_lineno, frame.f_code.co_name, frame.f_locals)

def stack_tracing(func):
    def logg_stack(*args, **kwargs):
        with func_trace(func.__name__):
            return_value = func(*args, **kwargs)
        return return_value
    return logg_stack

Raw Text