总结
1.什么是日志级别
-
日志级别是日志的严重程度;
-
warning是默认的日志级别,
critical
和error
的级别高于warning
,而info
和debug
级别低于warning
; -
如果设置的日志级别低于logging模块设置的级别,那么将被忽略;
2.日志格式参数
-
%(levelno)s
:打印日志级别的数值; -
%(levelname)s
:打印日志级别的名称; -
%(pathname)s
:打印当前执行程序的路径,其实就是sys.argv[0]; -
%(filename)s
:打印当前执行程序名; -
%(funcName)s
:打印日志的当前函数; -
%(lineno)d
:打印日志的当前行号; -
%(asctime)s
:打印日志的时间; -
%(thread)d
:打印线程ID; -
%(threadName)s
:打印线程名称; -
%(process)d
:打印进程ID; -
%(processName)s
:打印线程名称; -
%(module)s
:打印模块名称; -
%(message)s
:打印日志信息;
3.日志时间格式化
- 使用datefmt来设置打印时间的格式,如打印年月日时分秒:
datefmt='%Y-%m-%d %H:%M:%S'
;
4.日志输出处理 Handler
-
handler的level级别必须大于等于logger实例的level级别才有意义,如果日志的级别低于logger的级别是无法进入到logger的;
-
日志的输出可以是控制台,可以是文件, 默认是终端 stderr;
-
logger实例有继承关系,如果子logger没有设置level和handler,那么从父logger中继承;
-
每一个logger实例,默认有一个handler,StreamHandler;
-
每一个logger实例都有一个propagate属性,控制日志信息是否向父类传递, 默认propagate为True,则向父类传递日志信息;
5.如何安装第三方日志模块structlog
-
安装命令行:
pip install structlog
; -
如果需要带颜色打印,可以在命令行后面加colorama,不过最好不要使用带颜色打印,会有转义字符;
6.第三方日志模块structlog的使用
-
首先需要导入structlog模块,然后
import get_logger
类; -
接着使用
get_logger
进行实例化,得到实例对象log; -
最后就可以直接使用实例对象log进行打印了;
7.自定义全局日志模块
-
使用标准库logging模块封装全局日志;
-
首先需要构造一个类,然后初始化这个类,设置对应五个日志级别的五个函数,最后实例化这个类,就可以通过实例对象直接打印了;