logging模块是python内置的一个日志模块,用于更加方便和灵活的记录日志文件.
有两种方式使用logging模块来记录日志:
1.基础配置
import logging
logging.basicConfig(level = logging.INFO, #只打印大于此等级的日志
format = '%(asctime)s %(levelname)s %(filename)s %(message)s %(name)s',
datefmt = '%Y-%m-%d %H:%M:%S', #分别是时间,日志等级,文件名,信息,logger名 datefmt为时间格式
filename = 'file.log', #无此参数就打印到屏幕
filemode = 'a')
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
使用基础配置的方式配置相对简单,能完成一些简单的需求.
但是缺点有:
- 只能完成一些简单的需求,
- 不支持同时向文件中写入和向屏幕输出
- 根据操作系统的编码可能会出现乱码问题
2.创建logger对象
import logging
logger = logging.getLogger() #得到一个logger对象
logger.setLevel(logging.DEBUG) #为logger设置等级
file_handler = logging.FileHandler('file',encoding='utf-8') #文件操作符
file_handler.setLevel(logging.INFO) #为文件操作符设置等级,只写入此等级以上的日志
stream_handler = logging.StreamHandler() #屏幕操作符
formatter = logging.Formatter('%(asctime)s %(levelname)s %(filename)s %(message)s %(name)s',
datefmt=('%Y-%m-%d %H:%M:%S')) #意义同基础配置的format
file_handler.setFormatter(formatter) #为文件操作符添加格式formatter
stream_handler.setFormatter(formatter) #为屏幕操作符添加格式formatter
logger.addHandler(file_handler) #为logger对象添加文件操作符file_handler
logger.addHandler(stream_handler) #为logger对象添加屏幕操作符stream_handler
logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')
logger对象的配置相对复杂,需要将操作符和格式绑在一起,再把logger对象和操作符绑在一起.
但是这种方式很灵活,能支持很多需求.