Skip to content

Instantly share code, notes, and snippets.

@allenyang79
Last active May 8, 2018 08:43
Show Gist options
  • Save allenyang79/d196a3b609122a71b0778e18efd86a9b to your computer and use it in GitHub Desktop.
Save allenyang79/d196a3b609122a71b0778e18efd86a9b to your computer and use it in GitHub Desktop.
trace which invoke current function
import functools
import logging
import inspect
invoke_logger = logging.getLogger('invoke_logger')
fp = logging.FileHandler('invoke.log')
invoke_logger.addHandler(fp)
def log_invoke(fn):
@functools.wraps(fn)
def wrapped(*args, **kwargs):
frames = inspect.stack()
trace = ['%s %s %s' % (frame[1], frame[2], frame[3]) for frame in frames]
invoke_logger.critical('\n'.join(trace[1:]) + '\n' + ('=' * 80) + '\n')
return fn(*args, **kwargs)
return wrapped
@log_invoke
def foo():
print("bar")
foo()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment