读书笔记-PYTHON利用日志模块进行程序的调试方法

今天学习了利用日志模块对程序进行日志打印,便于程序调试时一些关键节点和关键变量信息的输出,当然这里的日志信息基本是靠人工进行定义输出的,可以在程序的开头和结尾,以及程序中一些循环中进行设置输出。
要启用logging模块,首先要引入模块,并对日志信息的格式我们需要在程序的开始处进行设置:logging.basicConfig(level=logging.DEBUG,format=’ %(asctime)s - %(levelname)s - %(message)s’)
这里分别设置了日志的级别,日志的格式,日志的消息等等。
下面用一个阶乘的函数的程序来进行日志的设置,便于对程序的调试:
import logging
logging.basicConfig(level=logging.DEBUG,format=’ %(asctime)s - %(levelname)s - %(message)s’)
logging.debug(‘Start of program’)

def factorial(n):
logging.debug(‘Start of factorial(%s)’%(n))
total=1
for i in range(n+1):
total*=i
logging.debug(‘i is ‘+str(i)+’,total is ‘+str(total))
logging.debug(‘End of factorial(%s%%)’%(n))
return total

print(factorial(5))
logging.debug(‘End of program’)

这个程序的输出如下:
2018-08-18 22:07:45,626 - DEBUG - Start of program
2018-08-18 22:07:45,678 - DEBUG - Start of factorial(5)
2018-08-18 22:07:45,688 - DEBUG - i is 0,total is 0
2018-08-18 22:07:45,696 - DEBUG - i is 1,total is 0
2018-08-18 22:07:45,705 - DEBUG - i is 2,total is 0
2018-08-18 22:07:45,713 - DEBUG - i is 3,total is 0
2018-08-18 22:07:45,719 - DEBUG - i is 4,total is 0
2018-08-18 22:07:45,724 - DEBUG - i is 5,total is 0
2018-08-18 22:07:45,729 - DEBUG - End of factorial(5%)
0
2018-08-18 22:07:45,739 - DEBUG - End of program

显然这个程序是错误的,因为不管输入多少值,最后的阶乘结果都是零,根据日志消息的输出,我们可以发现,i变量是从0开始的,而不是1,导致所有的toatl的值都是0,是错误的,应该将for i in range(n+1)改为for i in range(1,n+1),修改程序后再次运行结果为:
2018-08-18 22:10:06,830 - DEBUG - Start of program
2018-08-18 22:10:06,871 - DEBUG - Start of factorial(5)
2018-08-18 22:10:06,895 - DEBUG - i is 1,total is 1
2018-08-18 22:10:06,906 - DEBUG - i is 2,total is 2
2018-08-18 22:10:06,914 - DEBUG - i is 3,total is 6
2018-08-18 22:10:06,922 - DEBUG - i is 4,total is 24
2018-08-18 22:10:06,930 - DEBUG - i is 5,total is 120
2018-08-18 22:10:06,938 - DEBUG - End of factorial(5%)
120
2018-08-18 22:10:06,954 - DEBUG - End of program

这次我们可以清晰的看到每次循环i的变量都是正确的,从1到5,最终得到了正确的total的值。

这是利用日志消息输出的方法来对程序进行调测,当然这一章也讲述了利用程序自带的调试器工具,进行step和over等动作的调测,同样可以看到程序运行过程中全局变量和局部变量的值的变化,所以我们可以在日常程序的编写中根据实际需要进行选择,应该说PYTHON的日志输出是相当灵活的,如果需要禁止日志,只需要加入logging.disable语句便可以了,不需要进行每一句的删除,相当的灵活!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值