为日志创建树结构

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 ArrayList对象转换为实际值   web服务如何在JAVA类uisng JAXBElement中解组SOAP UI值   包含无值参数的java HttpClient表单URL   运行简单Camel Restlet演示项目的java问题?   带有自定义图标的java简单SWT警报消息?   java Netbeans 6.8:LibImport可以工作,但编译时“包不存在”   java如何获得绘画完成的通知?   java Hazelcast客户端模式群集故障后如何恢复?   Neo4J中Shapefile的java批插入   为什么ThreadPoolExecutor在Eclipse和从命令行运行Java程序时表现不同?   java在Android中计算两个坐标之间的距离时得到了荒谬的值   java在CardLayout中显示卡本身的下一张卡