python日志模块如何使用,python日志框架
在编写代码时,经常会遗漏关键因素log,导致函数被使用但无法追溯时出错。这时候就可以用log decorator解决了。本文将用Python做一个简单实用的日志装饰器,有需要的可以参考一下。
00-1010 1.装饰者2的简单版本。装饰者3的普通版本。优化版的decorator在编写代码时,往往会遗漏日志这个关键因素,导致函数使用错误却无法追溯。
事实上,我们可以通过编写一个非常简单的日志装饰器来大大提高故障排除的效率。
目录
编写装饰器非常简单,因为本质上装饰器只是一个返回函数的“高阶”函数:
1)函数作为参数传递给装饰器。
2)在装饰器中定义一个函数来处理作为参数传入的函数。
3)返回这个装饰器中定义的函数。
导入日期时间
定义日志(函数):
Log decorator,简单记录函数的日志。
Args:
func(函数):函数
def inner(*args):
timestamp=str(datetime . datetime . now())。拆分(.)[0]
res=func(*args)
print(f[{timestamp}] ({func。__name__}) {args} - {res} )
返回资源
返回内部
试试看:
@日志
def pluser(a,b):
返回a b
pluser(1,2)
效果如下:
虽然这样可以实现我们需要的功能,但实际上还有很大的优化空间。
1.简陋版装饰器
第一版代码中有一个明显的问题。装饰器中定义的处理函数不支持kwargs,而在装饰器中支持kwargs只是小菜一碟。
第二个问题是时间戳是以字符串截取的形式生成的,太粗暴了。实际上,可以使用strftime进行字符串转换。
修改如下:
导入日期时间
定义日志(函数):
Log decorator,简单记录函数的日志。
Args:
func(函数):函数
def inner(*args,**kwargs):
时间戳=datetime.datetime.now()。strftime( % Y-% m-% d % h :% m :% S )
res=func(*args,**kwargs)
print(f[{timestamp}] ({func。__name__}) {args} - {res} )
返回资源
返回内部
看起来优化的差不多了,但是还有提升的空间。
2.普通版装饰器
在前两个版本的代码中,我们使用print来输出日志,但是这种处理日志的方式并不标准。
使用日志模块来控制日志输出是一个更好的选择。
为了使用日志模块记录日志,我们需要首先配置日志相关选项。
1) 首先,生成一个日志记录器,并配置日志等级:
导入日志记录
#获取记录器并配置日志级别。
logger=logging . get logger(_ _ name _ _)
logger.setLevel(“调试”)
2) 配置日志格式、增加handler控制输出流:
#默认日志格式
格式化程序=记录。格式化程序( %(asctime)s-[%(level name)s]-%(message)s )
#控制台的处理程序输出
chlr=记录。StreamHandler()
#配置默认日志格式
chlr.setFormatter(格式化程序)
在这里,您可以设置处理程序需要处理的日志级别。如果未设置,将默认使用记录器自己的级别,即调试级别。
3) 最后,将此handler加入到日志记录器内:
# logger添加了这个处理程序。
logger.addHandler(chlr)
日志记录完整配置如下:
导入日志记录
#获取记录器并配置日志级别。
logger=logging . get logger(_ _ name _ _)
logger.setLevel(“调试”)
#默认日志格式
格式化程序=记录。格式化程序( %(asctime)s-[%(level name)s]-%(message)s )
#控制台的处理程序输出
chlr=记录。StreamHandler()
#配置默认日志格式
chlr.setFormatter(格式化程序)
# logger添加了这个处理程序。
logger.addHandler(chlr)
用的时候很简单,把print改成logger.debug就行了:
定义日志(函数):
Log decorator,简单记录函数的日志。
Args:
func(函数):函数
def inner(*args,**kwargs):
时间戳=datetime.datetime.now()。strftime( % Y-% m-% d % h :% m :% S )
res=func(*args,**kwargs)
logger.debug(ffunc: {func。__name__} {args} - {res} )
返回资源
返回内部
效果如下:
这样就完成了一个比较完整的日志装饰器。
附加的通用日志级别配置:
以上是基于Python编写一个简单实用的日志装饰器的详细内容。更多关于Python log decorator的信息,请关注热门IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。