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 | 线程名称 |