目录
1、日志级别
级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG
日志等级(level)
|
描述
|
DEBUG
|
最详细的日志信息,典型应用场景是 问题诊断
|
INFO
|
信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
|
WARNING
|
当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
|
ERROR
|
由于一个更严重的问题导致某些功能不能正常运行时记录的信息
|
CRITICAL
|
当发生严重错误,导致应用程序不能继续运行时记录的信息
|
2、日志字段信息与日志格式
一条日志信息对应的是一个事件的发生,而一个事件通常需要包括以下几个内容:
-
事件发生时间
-
事件发生位置
-
事件的严重程度--日志级别
-
事件内容
上面这些都是一条日志记录中可能包含的字段信息,当然还可以包括一些其他信息,如进程ID、进程名称、线程ID、线程名称等。日志格式就是用来定义一条日志记录中包含那些字段的,且日志格式通常都是可以自定义的
3、logging模块的使用方式介绍
logging模块提供了两种记录日志的方式:
-
第一种方式是使用logging提供的模块级别的函数
-
第二种方式是使用Logging日志系统的四大组件
其实,logging所提供的模块级别的日志记录函数也是对logging日志系统相关类的封装而已。
logging模块定义的模块级别的常用函数
函数
|
说明
|
logging.debug(msg, *args, **kwargs)
|
创建一条严重级别为DEBUG的日志记录
|
logging.info(msg, *args, **kwargs)
|
创建一条严重级别为INFO的日志记录
|
logging.warning(msg, *args, **kwargs)
|
创建一条严重级别为WARNING的日志记录
|
logging.error(msg, *args, **kwargs)
|
创建一条严重级别为ERROR的日志记录
|
logging.critical(msg, *args, **kwargs)
|
创建一条严重级别为CRITICAL的日志记录
|
logging.log(level, *args, **kwargs)
|
创建一条严重级别为level的日志记录
|
logging.basicConfig(**kwargs)
|
对root logger进行一次性配置
|
其中
logging.basicConfig(**kwargs)
函数用于指定“要记录的日志级别”、“日志格式”、“日志输出位置”、“日志文件的打开模式”等信息,其他几个都是用于记录各个级别日志的函数。
logging模块的四大组件
组件
|
说明
|
loggers
|
提供应用程序代码直接使用的接口
|
handlers
|
用于将日志记录发送到指定的目的位置
|
filters
|
提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略)
|
formatters
|
用于控制日志信息的最终输出格式
|
说明: logging模块提供的模块级别的那些函数实际上也是通过这几个组件的相关实现类来记录日志的,只是在创建这些类的实例时设置了一些默认值。
4、使用logging提供的模块级别的函数记录日志
4.1、最简单的日志输出
先来试着分别输出一条不同日志级别的日志记录:
import logging
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
也可以这样写:
logging.log(logging.DEBUG, "This is a debug log.")
logging.log(logging.INFO, "This is a info log.")
logging.log(logging.WARNING, "This is a warning log.")
logging.log(logging.ERROR, "This is a error log.")
logging.log(logging.CRITICAL, "This is a critical log.")
输出结果:
WARNING:root:This is a warning log.
ERROR:root:This is a error log.
CRITICAL:root:This is a critical log.
上面输出结果中每行日志记录的各个字段含义分别是:日志级别:日志器名称:日志内容
之所以会这样输出,是因为logging模块提供的日志记录函数所使用的日志器设置的日志格式默认是
BASIC_FORMAT
,其值为:
"%(le