ITPub博客

首页 > > > python别再用print了,试试这个模块,方便输出还能记录错误

python别再用print了,试试这个模块,方便输出还能记录错误

作者:nt1979 时间:2019-09-05 11:09:30 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-05

  • 博文量
    318
  • 访问量
    17318