码迷,mamicode.com
首页 > 编程语言 > 详细

Python的DEBUG LOG

时间:2019-01-02 12:26:07      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:icc   而在   nbsp   测试的   get   time   而且   color   lin   

一直在嵌入式行业,熟悉嵌入式的朋友都很了解嵌入式设备上DEBUG的麻烦,特别是一些缺乏断电工具和没有UI界面的设备。久而久之,开发一个新东西,首先就是要先搞定DEBUG手段。最近写了几个测试的python脚本用于跑些压力测试。找了些Python的DEBUG方法并加以处理,形成了方便使用的DEBUG手段。

其实Python的DEBUG LOG很简单很方便,相当于整辆车都做好了,就等你怎么开车了。而我们在C的嵌入式设备上,DEBUG都几乎需要自己造轮子,造车身。然而在Python中我们只需要import logging就可以了,而且这还是标准模块。无需额外的库。

每次跑LOG都可以生成以时间命令的LOG文件,这样就无需担心文件覆盖,重名,无法确认LOG开始时间等问题。可以参考的代码如下:

import time
import logging

log_filename=rLOG\%s_test.log%(time.strftime(%Y%m%d%H%M%S))

logging.basicConfig(level=logging.DEBUG,
format=%(asctime)s [line:%(lineno)d] %(levelname)s %(message)s,
datefmt=%Y.%m.%d %H:%M:%S,#datefmt=‘%a, %d %b %Y %H:%M:%S‘,
filename=log_filename,
filemode=w)

def debug_trace(str):
    print(str)#如果需要在控制台打印的话。
    logging.debug(str)

debug_trace("test")
logging.debug("test")

 生成log文件“20190102102228_test.log”,文件中的LOG如:2019.01.02 10:22:28 [line:14] DEBUG test

但是以上的写法会有个问题,lineno将不是我们想要的,一直会是debug_trace中的行号。如果直接使用 logging.debug("test"),则lineno就会期望的实际被调用的位置的行号。

 

我原来在C嵌入式上的一些习惯,debug时会把当前调用的函数名,行号等打印出来。所以加强版的debug trace就是如下:

 1 import time
 2 import logging
 3 import sys
 4 
 5 log_filename=rLOG\%s_test.log%(time.strftime(%Y%m%d%H%M%S))
 6 
 7 logging.basicConfig(level=logging.DEBUG,
 8 format=%(asctime)s %(levelname)s %(message)s,
 9 datefmt=%Y.%m.%d %H:%M:%S,#datefmt=‘%a, %d %b %Y %H:%M:%S‘,
10 filename=log_filename,
11 filemode=w)
12 
13 
14 def debug_trace(str):
15     debug_str = sys._getframe().f_back.f_code.co_name+"() "+"Line:"+"%d"%(sys._getframe().f_back.f_lineno)+"   "+str
16     print(debug_str)#如果需要在控制台打印的话。
17     logging.debug(debug_str)
18 
19 def main():
20     debug_trace("test")
21 
22 main()

这样打出来的LOG就可以是: 2019.01.02 10:41:10 DEBUG main() Line:20   test

Python的DEBUG LOG

标签:icc   而在   nbsp   测试的   get   time   而且   color   lin   

原文地址:https://www.cnblogs.com/Wokky/p/10207376.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!