Loading

logging模块

  • 导入
import logging

相较于print,更好控制输出在哪个地方,怎么输出及控制消息级别来过滤掉不需要的信息

  • 日志级别及输出

打印到控制台或日志文件

logging.debug(u"aaa")
# 打印调试日志,通常显示详细信息
logging.info(u"aaa")
# 确认一切按照预期运行
logging.warning(u"aaa")
# 表示意想不到的情况,也可以表示未来的一些问题
logging.error(u"aaa")
# 较严重的问题,未能执行设计的功能
logging.critical(u"aaa")
# 程序本身可能无法继续运行
# 以上的五种级别严重程度依次上升
# 在控制台中默认输出的是warning及其以上级别
logging.basicConfig(level=logging.NOTSET)
# 可以指定filename参数,此时就会把所有的打印信息输出到这个文件中,而不是控制台中
# 这个文件的后缀一般是log
# 同时可以指定filemode参数,指定文件的访问方式,默认是'a',即追加
# 设置日志级别,此时所有级别的信息都可以展示了 # 也可以设置level参数为logging.DEBUG # 也可以添加format参数 # 例如 format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')

format中涉及到的格式字符串字段

字段/属性名称使用格式描述
asctime %(asctime)s 日志事件发生的时间--人类可读时间,如:2003-07-08 16:49:45,896
created %(created)f 日志事件发生的时间--时间戳,就是当时调用time.time()函数返回的值
relativeCreated %(relativeCreated)d 日志事件发生的时间相对于logging模块加载时间的相对毫秒数(目前还不知道干嘛用的)
msecs %(msecs)d 日志事件发生事件的毫秒部分
levelname %(levelname)s 该日志记录的文字形式的日志级别('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
levelno %(levelno)s 该日志记录的数字形式的日志级别(10, 20, 30, 40, 50)
name %(name)s 所使用的日志器名称,默认是'root',因为默认使用的是 rootLogger
message %(message)s 日志记录的文本内容,通过 msg % args计算得到的
pathname %(pathname)s 调用日志记录函数的源码文件的全路径
filename %(filename)s pathname的文件名部分,包含文件后缀
module %(module)s filename的名称部分,不包含后缀
lineno %(lineno)d 调用日志记录函数的源代码所在的行号
funcName %(funcName)s 调用日志记录函数的函数名
process %(process)d 进程ID
processName %(processName)s 进程名称,Python 3.1新增
thread %(thread)d 线程ID
threadName %(thread)s 线程名称

 

posted @ 2020-12-22 20:10  lixin2020  阅读(84)  评论(0)    收藏  举报