python调试最开始用print,后来发现print仅能输出,不能显示具体错误行
现在发现用logging更加方便。
默认情况下Python的logging模块将日志打印到了标准输出中,
且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),
默认的日志格式为日志级别:Logger名称:用户输出消息。
在脚本开始先写:
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG) # Log等级总开关
h = logging.StreamHandler()
h.setLevel(logging.INFO) # 输出到console的log等级的开关
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
h.setFormatter(formatter)
logger.addHandler(h)
说明一下logging.Formatter的格式化串:
format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s用户输出的消息
以后输出就可以用logging.info()
将显示
logging.info()显示内容
可以看到显示时间、脚本名称和行数
这样调试将更加方便
通过将日志写入文件,将来分析错误的时候会更加方便
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4822/viewspace-3134764/ ,如需转载,请注明出处,否则将追究法律责任。