Skip to content

Instantly share code, notes, and snippets.

@c3h3
Last active August 18, 2016 18:03
Show Gist options
  • Save c3h3/2c605b22a30c0d904f215720690b12b0 to your computer and use it in GitHub Desktop.
Save c3h3/2c605b22a30c0d904f215720690b12b0 to your computer and use it in GitHub Desktop.
import traceback
def log(f):
log_data = {}
log_data["name"] = f.func_name
def new_f(*args, **kwargs):
log_data["args"] = args
log_data["kwargs"] = kwargs
try:
res = f(*args, **kwargs)
log_data["res"] = res
except Exception as e:
log_data["error"] = e
log_data["traceback"] = traceback.format_exc()
print "[in log] log_data = ", log_data
if "res" in log_data:
return log_data["res"]
else:
raise log_data["error"]
return new_f
def logf(filename):
# print "filename = " , filename
def log(f):
# print "filename = " , filename
log_data = {}
log_data["name"] = f.func_name
def new_f(*args, **kwargs):
print "filename = " , filename
log_data["args"] = args
log_data["kwargs"] = kwargs
try:
res = f(*args, **kwargs)
log_data["res"] = res
except Exception as e:
log_data["error"] = e
log_data["traceback"] = traceback.format_exc()
print "[in log] log_data = ", log_data
if filename == "":
fname = log_data["name"]
else:
fname = filename
with open("./"+fname+".log",'w') as ofile:
ofile.write("log_data = "+str(log_data)+"\n")
# print "new_f.func_globals = ", "filename" in new_f.func_globals
# new_f.func_globals["filename"] = filename
return new_f
# print "log.func_globals = ", "filename" in log.func_globals
return log
from datetime import datetime
import time
def timeit(f):
log_data = {}
log_data["name"] = f.func_name
t0 = datetime.now()
log_data["t0"] = t0
def new_f(*args,**kwargs):
log_data["args"] = args
log_data["kwargs"] = kwargs
try:
res = f(*args, **kwargs)
log_data["res"] = res
except Exception as e:
log_data["error"] = e
log_data["traceback"] = traceback.format_exc()
t1 = datetime.now()
log_data["t1"] = t1
log_data["dt"] = t1 - t0
print "[in timeit] log_data = ", log_data
return new_f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment