logging日志模块
一、login可以显示的信息类型:
- 调试信息:logging.debug('调试信息')
- 基础信息:logging.info('基础信息')
- 警告信息:logging.warning('警告信息')
- 错误信息:logging.error('错误信息')
严重错误信息:logging.critical('严重错误/批判信息')
如果不做任何的设置,日志默认只会显示警告、错误和严重错误三类信息,不会显示调试信息和基础信息。
二、日志设置
配置分类:
- 基础配置:使用basicConfig()来设置,特点是:操作简单,但是可定制化不高
- 高级配置:创建对象等来设置,特点是:操作有难度,但是可定制化很高。
(一)、基础配置
设置显示的日志需要在所有的信息类型之前添加logging.basicConfig()
basicConfig()的基本的参数:- level 最低显示等级对应五种信息类型, 格式为:
- level=logging.DEBUG
- level=logging.INFO
- level=logging.WARNING
- level=logging.ERROR
level=logging.CRITICAL
五个等级必须全部大写,在日常的工作中正常情况下最低的等级时INFO,除非是调试才会设置到DEBUG等级。
- format日志输出内容格式化,具体的格式属性:
字段/属性名称 使用格式 描述 asctime %(asctime)s 日志事件发生的时间--人类可读时间,如:2003-07-08 16:49:45,896 created %(created)f 日志事件发生的时间--时间戳,就是当时调用time.time()函数返回的值 relativeCreated %(relativeCreated)d 日志事件发生的时间相对于logging模块加载时间的相对毫秒数(目前还不知道干嘛用的) msecs %(msecs)d 日志事件发生事件的毫秒部分 levelname %(levelname)s 该日志记录的文字形式的日志级别('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL') levelno %(levelno)s 该日志记录的数字形式的日志级别(10, 20, 30, 40, 50) name %(name)s 所使用的日志器名称,默认是'root',因为默认使用的是 rootLogger 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 线程名称 显示的日期格式:
datefmt = '%a, %d, %b %Y %H:%M:%S'日志存储的文件名:
格式为:filename = 'path+日志名'
日志名:name.log, 后缀必须是log注意:如果添加filename = 'path+日志名',则往日志中添加,如果不写则是直接显示在屏幕上。
日志文件的操作模式:
格式为:filemode = 'a/w'注意:第一次创建日志文件的时候必须用w,一旦创建后必须改成a,如果不写这一条,默认模式是a。
- level 最低显示等级对应五种信息类型, 格式为:
import logging logging.basicConfig( level=logging.INFO, format = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s %(process)d', datefmt = '%a, %d, %b %Y %H:%M:%S', # 每一个参数之间必须用逗号隔开 filename = '../第三方库/test.log', filemode = 'a' ) logging.debug('调试信息') logging.info('基础信息') logging.warning('警告信息') logging.error('错误信息') logging.critical('批判/严重错误信息') ''' Sun, 16, Feb 2020 09:01:10 logging日志模块.py [line:17] INFO 基础信息 3434 Sun, 16, Feb 2020 09:01:10 logging日志模块.py [line:18] WARNING 警告信息 3434 Sun, 16, Feb 2020 09:01:10 logging日志模块.py [line:19] ERROR 错误信息 3434 Sun, 16, Feb 2020 09:01:10 logging日志模块.py [line:20] CRITICAL 批判/严重错误信息 3434 '''
注意:
使用基础配置方式的时候,logging.basicConfig()和loggin.debug/info/warning/error/critical()两者缺一不可,basicConfig()必须写在文件开头,第二个部分信息内容需要写在具体的程序中。
(二)、logger对象的形式操作日志文件
通过创建对象的方式来实现可定制化
具体的流程:
创建logger对象:logger = logging.getLogger()
根据需要可以创建多个对象
- 创建文件管理对象符: fh = logging.FileHandler('logger对象.log', encoding='utf-8')
- 设置显示日志信息的等级: logger.setLevel(logging.DEBUG/INFO/WARNING/ERROR/CRITICAL)
- 创建屏幕管理操作符: sh = logging.StreamHandler()
- 创建日志输出的格式(可以设置多个不同的格式): format = logging.Formatter('具体的显示格式')
- 为上述四项建立联系
- 文件管理对象符 绑定一个 格式: fh.setFormatter(format)
- 屏幕管理对象符 绑定一个 格式: sh.setFormatter(format)
- logger对象 绑定 文件操作管理符(可以绑定多个文件管理操作符):logger对象.addHandler(fh)
- logger对象 绑定 屏幕操作管理符: logger对象.addHandler(sh)
设置显示的信息:
logger.debug('显示信息')
logger.info('显示信息')
logger.warning('显示信息')
logger.error('显示信息')
logger.critical('显示信息')
# 创建logger对象 logger = logging.getLogger() logger1 = logging.getLogger() # 设置日志显示等级 logger.setLevel(logging.DEBUG) # 创建屏幕管理操作符 sh = logging.StreamHandler() # 创建文件管理操作符 fh = logging.FileHandler('logger.log', encoding = 'utf-8') fh1 = logging.FileHandler('logger1.log', encoding = 'utf-8') # 创建日志输出的格式(可以设置多个不同的格式) format1 = logging.Formatter('%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s %(process)d') format2 = logging.Formatter('%(asctime)s [line:%(lineno)d] %(levelname)s %(message)s %(process)d') # 为上述四项建立联系 # 文件管理对象符 绑定一个 格式 fh.setFormatter(format1) fh1.setFormatter(format2) # 屏幕管理对象符 绑定一个 格式 sh.setFormatter(format2) # logger对象 绑定 文件操作管理符(可以绑定多个文件管理操作符) logger.addHandler(fh) logger1.addHandler(fh1) # logger对象 绑定 屏幕操作管理符 logger.addHandler(sh) logger.debug('测试信息') logger.info('测试信息') logger.warning('测试信息') logger.error('测试信息') logger.critical('测试信息') ''' # 文件:创建了logger.log和logger1.log # 屏幕显示: 2020-02-16 09:55:06,050 [line:64] DEBUG 测试信息 5007 2020-02-16 09:55:06,052 [line:65] INFO 测试信息 5007 2020-02-16 09:55:06,052 [line:66] WARNING 测试信息 5007 2020-02-16 09:55:06,054 [line:67] ERROR 测试信息 5007 2020-02-16 09:55:06,055 [line:68] CRITICAL 测试信息 5007 '''
日志对象、文件操作管理符、屏幕操作管理符和日志格式都是可以设置多个的,设置几个根据需要来定
来源:https://www.cnblogs.com/ddzc/p/12315828.html