logging模块主要是为了记录程序运行期间产生的日志信息。
日志输出级别
有5个(10、20、30、40、50):
debug: 代码调试时输出的日志信息
info: 代码正常运行过程中输出的日志信息
warning: 代码运行结果可能和预期结果发生偏差时输出的日志信息
error: 代码出现异常时输出的日志信息
critical(fatal): 一般遇不到,遇到了也解决不了的问题,例如:磁盘或者内存空间已满等
logging默认设置是warning级别, 可以设置日志输出级别:
import logging
# 构造logger对象
logger = logging.getLogger()
# 构造stream_handler,得到一个将日志输出到控制台的Handler对象
stream_handler = logging.StreamHandler()
# logger对象添加stream_handler
logger.addHandler(stream_handler)
# 设置日志输出级别
logger.setLevel(logging.INFO)
# 使用logger
logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')
日志输出格式
# 设置日志输出格式
fmt = logging.Formatter(
'%(asctime)s - [%(levelname)s] - %(filename)s[%(lineno)d]: %(message)s')
stream_handler.setFormatter(fmt)
日志输出到文件
import logging
logger = logging.getLogger()
file_handler = logging.FileHandler(
'./test.log', encoding='utf-8') # 构造file_handler
fmt = logging.Formatter(
'%(asctime)s - [%(levelname)s] - %(filename)s[%(lineno)d]: %(message)s')
file_handler.setFormatter(fmt)
logger.addHandler(file_handler)
logger.setLevel(logging.INFO)
logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')
封装logging工具
import logging
class Logging:
def __init__(self, level=20):
self.logger = logging.getLogger()
self.logger.setLevel(level)
def init_logger():
logger = Logging().logger
stream_handler = logging.StreamHandler()
file_handler = logging.FileHandler('./test.log', encoding='utf-8')
fmt = logging.Formatter(
'%(asctime)s - [%(levelname)s] - %(filename)s[%(lineno)d]: %(message)s')
stream_handler.setFormatter(fmt)
file_handler.setFormatter(fmt)
logger.addHandler(stream_handler)
logger.addHandler(file_handler)
return logger
代码重构
可进一步对logging工具进行代码优化: