用裝飾器實現把函數用try...except包起來:
import logging import traceback from functools import wraps logging.basicConfig(filename='error.log', level=logging.INFO, format='%(levelname)s::%(name)s::%(asctime)s::%(filename)s,line %(lineno)s, in %(funcName)s(),msg:%(message)s' ) #定義裝飾器error_handler def error_handler(func): @wraps(func) #關鍵行 def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except: msg=traceback.format_exc() logging.error(msg) return 'error' return wrapper #返回函數名 #用法示例:自動處理test()的異常 @error_handler def test(): a=1/0 return a if __name__=='__main__': test()