当前位置:Gxlcms > Python > 用python装饰器打log

用python装饰器打log

时间:2021-07-01 10:21:17 帮助过:63人阅读

  1. #! /usr/bin/env python
  2. # coding=utf-8
  3. from time import time
  4. def logged(when):
  5. def log(f,*args,**kargs):
  6. print("called: function:%s,args:%r,kargs:%r"%(f,args,kargs))
  7. def pre_logged(f):
  8. def wrapper(*args,**kargs):
  9. log(f,*args,**kargs)
  10. return f(*args,**kargs)
  11. def post_logged(f):
  12. def wrapped(*args,**kargs):
  13. now=time()
  14. try:
  15. return f(*args,**kargs)
  16. finally:
  17. log(f,*args,**kargs)
  18. print("time delta:%s"%(time()-now))
  19. return wrapped
  20. try:
  21. #从这里开始调用
  22. return{"pre":pre_logged,"post":post_logged}[when]
  23. except Exception as e:
  24. print(e)
  25. @logged("post")
  26. def hello(name):
  27. print("hello",name)
  28. @logged("post")
  29. def test(a,b=1):
  30. print(a+b)
  31. hello("world")
  32. test(1,2)

人气教程排行