我們回到日志的例子,并創(chuàng)建一個包裹函數(shù),能讓我們指定一個用于輸出的日志文件。
from functools import wraps
def logit(logfile='out.log'):
def logging_decorator(func):
@wraps(func)
def wrapped_function(*args, **kwargs):
log_string = func.__name__ + " was called"
print(log_string)
# 打開logfile,并寫入內容
with open(logfile, 'a') as opened_file:
# 現(xiàn)在將日志打到指定的logfile
opened_file.write(log_string + '\n')
return func(*args, **kwargs)
return wrapped_function
return logging_decorator
@logit()
def myfunc1():
pass
myfunc1()
# Output: myfunc1 was called
# 現(xiàn)在一個叫做 out.log 的文件出現(xiàn)了,里面的內容就是上面的字符串
@logit(logfile='func2.log')
def myfunc2():
pass
myfunc2()
# Output: myfunc2 was called
# 現(xiàn)在一個叫做 func2.log 的文件出現(xiàn)了,里面的內容就是上面的字符串