logging模块:
标准库里面的logging模块,在前面学习线程安全时曾用来解决print被打断的问题,这里会介绍logging模块的功能。
logging模块是线程安全的,不需要客户做任何特殊的工作。它通过使用线程锁实现了这一点; 有一个锁来序列化访问模块的共享数据,每个处理程序还创建一个锁来序列化访问其底层 I/O。
日志记录级别:
级别数值
CRITICAL
50
ERROR
40
WARNING
30,默认
INFO
20
DEBUG
10
NOTSET
0
定义的记录级别越低,信息越多,级别越高,信息越少。
日志记录格式化字符串:
属性名格式描述
asctime
%(asctime)s
易读的时间格式: 默认情况下是‘2003-07-08 16:49:45,896‘的形式(逗号之后的数字是毫秒部分的时间)
filename
%(filename)s
路径名的文件名部分。
funcName
%(funcName)s
日志调用所在的函数名
levelname
%(levelname)s
消息的级别名称(‘DEBUG‘, ‘INFO‘, ‘WARNING‘, ‘ERROR‘, ‘CRITICAL‘).
levelno
%(levelno)s
对应数字格式的日志级别 (DEBUG, INFO, WARNING, ERROR,CRITICAL).
lineno
%(lineno)d
发出日志记录调用的源码行号 (如果可用)。
module
%(module)s
所在的模块名(如test6.py模块则记录test6)
message
%(message)s
记录的信息
name
%(name)s
调用的logger记录器的名称
process
%(process)d
进程ID
processName
%(processName)s
进程名
thread
%(thread)d
线程ID
threadName
%(threadName)s
线程名
使用basicConfig方法配置logging记录格式:
格式描述
filename
指定使用指定的文件名而不是StreamHandler创建FileHandler。
filemode
指定打开文件的模式,如果指定了filename(如果文件模式未指定,则默认为‘a‘)。
format
为处理程序使用指定的格式字符串。
datefmt
使用指定的日期/时间格式。
level
将根记录器级别设置为指定的级别。
handlers
如果指定,这应该是一个已经创建的处理程序的迭代器添加到根记录器。任何尚未设置格式化程序的处理程序都将被分配在此函数中创建的默认格式化程序。
举例:
import threading
import logging
FORMAT = "%(asctime)s %(thread)d %(message)s"
logging.basicConfig(level=logging.I