用作记录日志,默认分为六种日志级别(括号为级别对应的数值)
NOTSET(0)
DEBUG(10)
INFO(20)
WARNING(30)
ERROR(40)
CRITICAL(50)
在自定义日志级别时注意不要和默认的日志级别数值相同
logging 执行时输出大于等于设置的日志级别的日志信息,如设置日志级别是 INFO,则 INFO、WARNING、ERROR、CRITICAL 级别的日志都会输出。
Logger:日志,暴露函数给应用程序,基于日志记录器和过滤器级别决定哪些日志有效。
LogRecord :日志记录器,将日志传到相应的处理器处理。
Handler :处理器, 将(日志记录器产生的)日志记录发送至合适的目的地。
Filter :过滤器, 提供了更好的粒度控制,它可以决定输出哪些日志记录。
Formatter:格式化器, 指明了最终输出中日志记录的格式。
logging 使用非常简单,使用 basicConfig() 方法就能满足基本的使用需要;如果方法没有传入参数,会根据默认的配置创建Logger 对象,默认的日志级别被设置为 WARNING,该函数可选的参数如下表所示。
参数名称
参数描述
filename
日志输出到文件的文件名
filemode
文件模式,r[+]、w[+]、a[+]
format
日志输出的格式
datefat
日志附带日期时间的格式
style
格式占位符,默认为 "%" 和 “{}”
level
设置日志输出级别
stream
定义输出流,用来初始化 StreamHandler 对象,不能 filename 参数一起使用,否则会ValueError 异常
handles
定义处理器,用来创建 Handler 对象,不能和 filename 、stream 参数一起使用,否则也会抛出 ValueError 异常
但是当发生异常时,直接使用无参数的 debug() 、 info() 、 warning() 、 error() 、 critical() 方法并不能记录异常信息,需要设置 exc_info=True 才可以,或者使用 exception() 方法,还可以使用 log() 方法,但还要设置日志级别和 exc_info 参数
Formatter 对象用来设置具体的输出格式,常用格式如下表所示
格式
变量描述
%(asctime)s
将日志的时间构造成可读的形式,默认情况下是精确到毫秒,如 2018-10-13 23:24:57,832,可以额外指定 datefmt 参数来指定该变量的格式
%(name)
日志对象的名称
%(filename)s
不包含路径的文件名
%(pathname)s
包含路径的文件名
%(funcName)s
日志记录所在的函数名
%(levelname)s
日志的级别名称
%(message)s
具体的日志信息
%(lineno)d
日志记录所在的行号
完整路径
%(process)d
当前进程ID
%(processName)s
当前进程名称
%(thread)d
当前线程ID
%threadName)s
当前线程名称