题目
1.请你创建一个装饰器, 功能实现函数运行时自动产生日志记录。
日志格式如下:
程序运行时间 主机短名 程序名称: 函数[%s]运行结果为[%s]
产生的日志文件并不直接显示在屏幕上, 而是保存在 file.log 文件中, 便于后期软件运行结果的分析.
import os
import time
import sys
def add_log(fun):
"""
用来添加日志,格式如下:
程序运行时间 主机短名 程序名称: 函数[%s]运行结果为[%s]
"""
def wrapper(*args, **kwargs):
# 程序开始的时间
start_time = time.time()
# 获取被装饰的函数的返回值
result = fun(*args, **kwargs)
# 程序结束的时间
end_time = time.time()
# 程序运行的时间
run_time = str('%.2f' % (end_time - start_time))
# 获取主机名 nodename='foundation0.ilt.example.com'
hostname = os.uname().nodename.split('.')[0]
# 运行的程序
process_full_name = sys.argv[0]
process_name = os.path.split(process_full_name)[-1]
# 获取函数名: 函数名.__name__
info = "函数[%s]的运行结果为%s" % (fun.__name__, result)
# 日志内容
log = " ".join([run_time, hostname, process_name, ':', info])
# 日志信息写入文件
#print(log)
with open('file.log', 'a') as f:
f.write(log)
f.write('\n')
return result
return wrapper
@add_log
def music():
time.sleep(1)
print("正在听音乐.....")
@add_log
def add(x, y):
time.sleep(1.5)
return x + y
@add_log
def roll(name, age, **kwargs):
print(name