概述
logging
模块为我们提供了一个方便快捷的工具用于记录日志。
日志等级
logging
模块中,把日志分为了一下几个等级:
等级 | 对应数值(等级) | 场景 | 用法 |
---|---|---|---|
CRITICAL | 50 | 当发生严重错误,导致应用程序不能继续运行时记录的信息 | logging.critical |
ERROR | 40 | 由于一个严重的问题导致某些功能不能正常运行时记录的信息 | logging.error |
WARNING | 30 | 发生某些不期望的事但程序还是正常运行时记录的信息 | logging.warning |
INFO | 20 | 信息详细程度仅次于DEBUG,通常只记录关键节点信息 | logging.info |
DEBUG | 10 | 最详细的日志信息,典型应用场景是 问题诊断 | logging.debug |
NOTSET | 0 | 略 | 略 |
数值越高,代表着对应的等级越高。在logging
模块当中,日志的记录的等级是有设定,低于等级的日志并不会被记录下来。比如说,如果我们把等级设置为WARNING
,那么INFO
和DEBUG
等级的日志就不会被记录下来。
默认的等级是``WARNING。
基本用法
记录
logging.debug('这是Debug日志')
logging.info('这是Info日志')
logging.warning('这是Warning日志')
logging.error('这是Error日志')
logging.critical('这是Critical日志')
默认情况下会打印到屏幕上。
基本配置
使用logging.basicConfig
方法可以进行日志的配置:
logging.basicConfig(**kwargs)
可选参数(常用的一部分):
参数名称 | 描述 |
---|---|
filename | 指定日志输出目标文件的文件名,指定该设置项后日志信心就不会被输出到控制台了 |
filemode | 指定日志文件的打开模式,默认为’a’。需要注意的是,该选项要在filename指定时才有效 |
format | 指定日志格式字符串,即指定日志输出时所包含的字段信息以及它们的顺序。 |
datefmt | 指定日期/时间格式。需要注意的是,该选项要在format中包含时间字段%(asctime)s时才有效 |
level | 指定日志器的日志级别 |
format
的可选参数有如下(部分):
字段/属性名称 | 使用格式 | 描述 |
---|---|---|
asctime | %(asctime)s | 日志事件发生的时间–人类可读时间,如:2003-07-08 16:49:45,896 |
levelname | %(levelname)s | 该日志记录的文字形式的日志级别(‘DEBUG’, ‘INFO’, ‘WARNING’, ‘ERROR’, ‘CRITICAL’) |
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 | 线程名称 |
因此我们可以这样使用:
logging.basicConfig(
format='%(levelname)s %(asctime)s : %(levelname)s : %(message)s',
level=logging.INFO,
filename='logging.log')
logging.debug('这是Debug日志')
logging.info('这是Info日志')
logging.warning('这是Warning日志')
logging.error('这是Error日志')
logging.critical('这是Critical日志')
logging.log内部:
INFO 2018-07-22 18:08:52,202 : INFO : 这是Info日志
WARNING 2018-07-22 18:08:52,399 : WARNING : 这是Warning日志
ERROR 2018-07-22 18:08:52,399 : ERROR : 这是Error日志
CRITICAL 2018-07-22 18:08:52,399 : CRITICAL : 这是Critical日志