为日志创建树结构

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。与其他修饰符不同,括号是正确返回修饰符函数值所必需的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用DAO,DTO模式作为MVC   java获取用于Android开发的图像   java Android Studio txt文件中的文件计数   任何类型泛型构造的枚举的java类   java为我的应用程序上的每个用户创建一个图表   算法如何在java中进行递归搜索?   java如何从MongoRepository/QueryDSL中获取不同的字段?   java如何获取JCheckbox的选定索引?   java嵌套。属性文件   Java如何发现两个数组是否彼此重复?   java Spring启动应用程序,带有raspberry pi上的Jython   RMI需要java。rmi。服务器NAT的主机名,那么像CORBA这样的其他技术如何解决NAT问题呢?   java If语句总是给出相同的答案   x到y的幂的java递归方法   使用ApacheCamel对USPSAPI进行地址验证的java HTTP查询   java很难定义与ArrayList交互的方法   java如何将HttpServletRequest转换为原始请求字符串?