一、logging模块是什么?
是Python内置的标准模块,主要用于输出运行日志
二、日志的作用
- 日志是代码的必要组成部分
- 记录日志能显示程序当前运行状态
- 出问题后定位当时问题
三、python日志级别
DEBUG:调试信息
INFO:有用的信息
WARNING:警告信息 (默认日志级别)
ERROR:错误信息
CRITICAL:严重错误信息
NOTSET:非级别,表示不设置,按照父logger级别来过滤日志
日志级别关系:
NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
备注:如果把log的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出。也就是说,日志级别越高,打印的日志越不详细。
四、logging模块实战
4.1 封装做成公共模块
import os
import logging
current_path = os.path.dirname(__file__)
log_path = os.path.join( current_path ,'../logs/test.log' )
class LogUtils:
def __init__(self,logfile_path = log_path ):
self.logfile_path = logfile_path
self.logger = logging.getLogger('Logger')
self.logger.setLevel(level=logging.INFO)
file_log = logging.FileHandler(self.logfile_path) #将日志写入指定路径下
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') #日志的格式
file_log.setFormatter(formatter)
self.logger.addHandler(file_log)
def info(self,message):
self.logger.info( message )
def error(self,message):
self.logger.error(message)
logger = LogUtils() #创建一个对象
if __name__=='__main__':
log_utils = LogUtils()
log_utils.info( 'newdream' )
备注:在日志封装模块内创建一个类对象,这样的话调用就方便很多,且不会出现重复数据问题。