为日志创建树结构
treelogger的Python项目详细描述
treelogger
此包通过为在函数中执行的函数创建树结构,将结构添加到应用程序日志中。
使用常规记录器对这些嵌套函数进行故障排除可能会非常麻烦,但是通过使用树记录器,您可以很容易地看到事件链并深入到错误发生的位置。
下面是这棵树的样子的一个例子。此示例显示如何将函数的输出嵌套到适当的级别。
Function Stand_Up
-"Begin Standing Up"
--Function Move_Legs
---"Moving Legs"
----Function Check_Balance
-----"Balance is Good"
----Finish Check_Balance
---"Leg Movement Sucessful"
-- Finish Move_Legs
-"Stand Up took 1 Second(s)"
Finish Stand_up
要开始树日志记录,请将树对象和treewrap decorator导入到模块中。
#test.py
from treelogger import tree, treewrap
@treewrap()
def showthis(value):
tree.log(value)
return
@treewrap()
def nest(value):
tree.log('Nesting a value of %i' % value)
showthis(value)
tree.log('Nesting a value of %i + 1' % value)
showthis(value + 1)
然后可以将模块中的内容导入到一个或多个主模块中。在主模块中,使用tree=treelogger()表单创建日志记录实例。
TreeLogger类实例是一个全局实例(类似于sys.stdout),导入树的所有模块都会将其日志发送到全局树。定义全局树时,它有两个默认输出:stdout和文本文件。
#main.py
from test import showthis, nest
from treelogger import tree, TreeLogger
tree = TreeLogger()
nest(123)
tree.close_log()
运行main.py将提供以下输出。
<?xml version="1.0" ?>
<log>
<nest>
<msg> Nesting a value of 123 </msg>
<showthis>
<msg> 123 </msg>
</showthis>
<msg> Nesting a value of 123 + 1 </msg>
<showthis>
<msg> 124 </msg>
</showthis>
</nest>
</log>
如您所见,函数变得嵌套,函数的日志消息也变得嵌套。生成的xml文件可以使用xpath进行搜索,也可以使用xml可视化工具进行可视化。
一个常见的错误是使用不带()的treewrap。与其他修饰符不同,括号是正确返回修饰符函数值所必需的。